Подскажите пж, а в Зимбре есть возможность импортировать и экспортировать iCal-календари? Поддерживает ли она все виды записей: встречи, задачи (с подзадачами), заметки, дневниковые записи?
По поводу выходных таки добрался описать все результаты разбирательств с этим багом. Сначала по вопросам, потом итоги разбора причин.
> Вопрос первый: альвекс дружит с кастомными
> бизнес процессами и списками данных?
Да. Поставьтесь без beCPG, залейте свои процессы и модели - все будет работать.
> Вопрос второй: Альвекс(jar файлы) при запуске
> кудато рапаковываються? чтобы очистить систему
> от альвекса мало удалить jar файлы?
Не распаковывается. Но если у вас есть ноды в репозитории, которые используют модели Alvex, то модели нельзя просто так удалять. Нужно сначала удалить ноды, только потом модели (ака jar-ники). Пример - запустили бизнес-процесс (может даже завершили штатно), в репе появились ноды (задачи процесса), которые используют модель этого процесса. Чтобы удалить модель, нужно сначала удалить до конца процессы, в т.ч. завершенные.
Это никак не специфично для Alvex. Попробуйте сделать так на собственных процессах - получите тот же эффект.
> Заметил что ошибка "Процесс не может быть запущен {0}"
> появляется даже если нет моих кастомных процессов (чистая
> Alfresco 4.2.f + BeCPG Project Manager + Alvex 2014.05)
Да, на таком чистом инстале проблема проявляется.
> > Но вообще как-то очень странно этот beCPG устроен.
> > Почему их amp-ы ставятся только с ключом '-force' - загадка.
> у меня вроде и без force ставились.
Оно ставится именно что только с -force. Возможно, Вы ставили скриптом установки от beCPG. Но он внутри себя молча вызывает с -force, причем подавляя вывод предупреждений.
Теперь самое интересное - что же происходит, и что с этим делать. Причина проблемы такая:
1. beCPG перегружает штатное API Alfresco для получения любых форм, в том числе форм задач процесса. Alvex тоже это делает. Почему так - потому что интерфейсов под вставку своего кода Alfresco в этом месте не предусмотрела, остается только замена на свою реализацию. При этом Alvex использует штатный механизм перегрузки, а beCPG при установке просто затирает исходную реализацию, складывая на ее место свою (да, именно для таких манипуляций и нужен ключ -force при установке).
2. В итоге используется реализация имени Alvex. Просто потому что штатный механизм перегрузки сделан именно для того, чтобы заменить реализацию Alfresco на свою. И если на месте реализации имени Alfresco де-факто лежит реализация имени beCPG - это ничего не меняет, она будет перегружена реализацией имени Alvex.
3. beCPG при установке затирает не только API получения форм, но и контролы форм (опять привет -force). Причем буквально все контролы и довольно жестоко - банальный textfield начинает зависеть от того, что отдают API имени beCPG. Именно на этом моменте все падает - потому что реализация имени beCPG заменена на реализацию имени Alvex, а перегруженные контролы никак не проверяют, что нестандартные функции имени beCPG доступны.
Как с этим жить:
1. Самый правильный сценарий:
Заставить Alfresco предусмотреть нужные интерфейсы для расширения API.
Заставить нас и beCPG перейти на них вместо перегрузки. (Мы готовы, не вопрос.)
2. Менее правильный сценарий:
Объяснить beCPG, что так жить нельзя. Заставить их (а) не затирать реализации, а перегружать их, (б) отвязать перегруженные контролы от нестандартных API. (Alvex сделан именно так - если будет использоваться реализация beCPG, у нас отвалятся некоторые красивости, ради которых сделана наша реализация, но вообще-то работать все будет.)
3. Самый быстрый сценарий:
С помощью напильника и колючей проволоки сделать свою третью реализацию API, склеив в ней все функции beCPG и Alvex. С точки зрения правильности - плохая идея, зато никого ни в чем убеждать не надо, можно просто сделать. Смотреть надо в сторону alfresco/site-webscripts/com/alvexcore/components/form/form.lib.ftl из состава Alvex и alfresco/site-webscripts/org/alfresco/components/form/form.lib.ftl из состава beCPG.
Внезапно заметил вопрос. Пожалуй, занекропощу. Это баг. Наивно кажется, ровно тот же, что ALV-534. Если правда тот же, то не могу обещать, что исправим. Слишком странно воспроизводится и слишком очевидно обходится. Тем не менее, можете в существующий тикет выложить свой шаблон, который не работает. Вдруг именно он правда поможет понять причину и решить проблему.
4. Внести ровно одно изменение - добавить исполнителя. Сохранить форму.
5. Сразу после этого снять лог tomcat/logs/catalina.out. Сразу - потому что с включенной отладкой он очень быстро замусоривается, и искать в нем лог ровно этой транзакции будет довольно мучительно. Ближе к концу лога будет блок строк на 20-30 вида
2014-06-12 13:37:04,289 DEBUG [processor.node.NodeFormProcessor] [http-apr-8080-exec-3] Processing field org.alfresco.repo.forms.FormData$FieldData@233656f1 <bla-bla-bla>
Блок начинается со строчки
2014-06-12 13:37:04,287 DEBUG [processor.node.NodeFormProcessor] [http-apr-8080-exec-3] Persisting form for: <NodeRef>
Где NodeRef - ровно тот, который в url-е страницы.
6. Выложить сюда (а) NodeRef, (б) описанный кусок лога (ну или приаттачить лог целиком).
Надеюсь, этого хватит, чтобы разобраться, откуда такое счастье возникает.
Вы хотите всем пользователям каждое утро рассылать то, у кого сегодня ДР? Как-то по-садистски звучит :)
Посмотрите в качестве примера на скрипт, рассылающий каждое утро напоминание о задачах: https://github.com/ITDSystems/alvex-courses-extras/tree/master/2014-02-2...
JS - непосредственно выборка задач и отправка писем их владельцам. XML - конфиг, когда выполнять скрипт. Единственная подлежащая изменению в нем строчка - №75, ну и может еще пара за ней.
Вам нужно найти правильное API для вытаскивания даты дня рождения из профиля нужных пользователей, преобразовать данные в читабельный вид и рассылать аналогичным скриптом.
> Вопрос первый: альвекс дружит с кастомными
> бизнес процессами и списками данных?
Да. Поставьтесь без beCPG, залейте свои процессы и модели - все будет работать.
> Вопрос второй: Альвекс(jar файлы) при запуске
> кудато рапаковываються? чтобы очистить систему
> от альвекса мало удалить jar файлы?
Не распаковывается. Но если у вас есть ноды в репозитории, которые используют модели Alvex, то модели нельзя просто так удалять. Нужно сначала удалить ноды, только потом модели (ака jar-ники). Пример - запустили бизнес-процесс (может даже завершили штатно), в репе появились ноды (задачи процесса), которые используют модель этого процесса. Чтобы удалить модель, нужно сначала удалить до конца процессы, в т.ч. завершенные.
Это никак не специфично для Alvex. Попробуйте сделать так на собственных процессах - получите тот же эффект.
> Заметил что ошибка "Процесс не может быть запущен {0}"
> появляется даже если нет моих кастомных процессов (чистая
> Alfresco 4.2.f + BeCPG Project Manager + Alvex 2014.05)
Да, на таком чистом инстале проблема проявляется.
> > Но вообще как-то очень странно этот beCPG устроен.
> > Почему их amp-ы ставятся только с ключом '-force' - загадка.
> у меня вроде и без force ставились.
Оно ставится именно что только с -force. Возможно, Вы ставили скриптом установки от beCPG. Но он внутри себя молча вызывает с -force, причем подавляя вывод предупреждений.
Теперь самое интересное - что же происходит, и что с этим делать. Причина проблемы такая:
1. beCPG перегружает штатное API Alfresco для получения любых форм, в том числе форм задач процесса. Alvex тоже это делает. Почему так - потому что интерфейсов под вставку своего кода Alfresco в этом месте не предусмотрела, остается только замена на свою реализацию. При этом Alvex использует штатный механизм перегрузки, а beCPG при установке просто затирает исходную реализацию, складывая на ее место свою (да, именно для таких манипуляций и нужен ключ -force при установке).
2. В итоге используется реализация имени Alvex. Просто потому что штатный механизм перегрузки сделан именно для того, чтобы заменить реализацию Alfresco на свою. И если на месте реализации имени Alfresco де-факто лежит реализация имени beCPG - это ничего не меняет, она будет перегружена реализацией имени Alvex.
3. beCPG при установке затирает не только API получения форм, но и контролы форм (опять привет -force). Причем буквально все контролы и довольно жестоко - банальный textfield начинает зависеть от того, что отдают API имени beCPG. Именно на этом моменте все падает - потому что реализация имени beCPG заменена на реализацию имени Alvex, а перегруженные контролы никак не проверяют, что нестандартные функции имени beCPG доступны.
Как с этим жить:
1. Самый правильный сценарий:
Заставить Alfresco предусмотреть нужные интерфейсы для расширения API.
Заставить нас и beCPG перейти на них вместо перегрузки. (Мы готовы, не вопрос.)
2. Менее правильный сценарий:
Объяснить beCPG, что так жить нельзя. Заставить их (а) не затирать реализации, а перегружать их, (б) отвязать перегруженные контролы от нестандартных API. (Alvex сделан именно так - если будет использоваться реализация beCPG, у нас отвалятся некоторые красивости, ради которых сделана наша реализация, но вообще-то работать все будет.)
3. Самый быстрый сценарий:
С помощью напильника и колючей проволоки сделать свою третью реализацию API, склеив в ней все функции beCPG и Alvex. С точки зрения правильности - плохая идея, зато никого ни в чем убеждать не надо, можно просто сделать. Смотреть надо в сторону alfresco/site-webscripts/com/alvexcore/components/form/form.lib.ftl из состава Alvex и alfresco/site-webscripts/org/alfresco/components/form/form.lib.ftl из состава beCPG.
1. Открыть tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties и дописать в конец:
После этого в логах будет много отладочной информации. Так что лучше потом убрать сразу эти строчки.
2. Рестартнуть Tomcat.
3. Открыть форму редактирования какого-нибудь документа. Обратить внимание на nodeRef в строке адреса. (Адрес будет типа http://alfresco:8080/share/page/site/test/edit-metadata?nodeRef=workspac..., интересен только параметр NodeRef.)
4. Внести ровно одно изменение - добавить исполнителя. Сохранить форму.
5. Сразу после этого снять лог tomcat/logs/catalina.out. Сразу - потому что с включенной отладкой он очень быстро замусоривается, и искать в нем лог ровно этой транзакции будет довольно мучительно. Ближе к концу лога будет блок строк на 20-30 вида
Блок начинается со строчки
Где NodeRef - ровно тот, который в url-е страницы.
6. Выложить сюда (а) NodeRef, (б) описанный кусок лога (ну или приаттачить лог целиком).
Надеюсь, этого хватит, чтобы разобраться, откуда такое счастье возникает.
Спасибо за помощь.
Посмотрите в качестве примера на скрипт, рассылающий каждое утро напоминание о задачах:
https://github.com/ITDSystems/alvex-courses-extras/tree/master/2014-02-2...
JS - непосредственно выборка задач и отправка писем их владельцам. XML - конфиг, когда выполнять скрипт. Единственная подлежащая изменению в нем строчка - №75, ну и может еще пара за ней.
Вам нужно найти правильное API для вытаскивания даты дня рождения из профиля нужных пользователей, преобразовать данные в читабельный вид и рассылать аналогичным скриптом.
http://switzernet.com/public/091215-zimbra-installation-config/#_Startup...
надо сделать поиск, указать критерии:
основные фильтры : не прочитано
дополнительные фильтры: статус: в любой папке.
по итогу в поле поиска будет такое:
is:anywhere, is:unread