Нестандартные сообщения о результате выполнения задач в Alfresco и Activiti
Одним из каверзных вопросов, возникающих при разработке своих бизнес-процессов в Alfresco и Activiti, является изменение стандартных строк сообщений о статусе задач и их локализация. Есть много инструкций о создании своих типов бизнес-процессов Activiti, но этот вопрос не рассматривается ни в одном из них. Хотя сообщения, которые видны в пользовательском интерфейсе, очень важны для того, чтобы пользователи привыкли к новой для них системе.
Мы столкнулись с проблемой перевода статуса задачи, разрабатывая Alvex, наше решение для управления бизнес-процессами и проектами.
Давайте для примера рассмотрим бизнес-процесс с одной задачей:
Скорее всего, вам потребуются собственные надписи на кнопках при выполнении задачи и сообщения о результате ее выполнения в истории бизнес-процесса:
Загвоздка заключается в том, что Alfresco использует разные подходы к локализации этих строк, хотя они зачастую одинаковы.
1. Кнопки в форме задачи
Вам потребуется:
- Заменить стандартное свойство bpm:outcomePropertyName на новое в своей модели задачи и наложить на новое свойство ограничение
- Добавить строки локализации для ограничения
- Настроить интерфейс Share
Шаг 1. Модель задачи
Для задачи ‘Approve’ (согласовать) модель задачи очень простая, пока мы не решим добавить в неё свои нестандартные кнопки:
<type name="alvexcourse:approveTask"> <parent>bpm:workflowTask</parent> </type>
При добавлении ограничения она становится чуть сложнее:
<type name="alvexcourse:approveTask"> <!-- Заменяем родителя нашего типа задачи с bpm:workflowTask на bpm:activitiOutcomeTask --> <parent>bpm:activitiOutcomeTask</parent> <!-- Создаем новое свойство, накладывая на него ограничение со списком допустимых результатов выполнения задачи --> <properties> <property name="alvexcourse:okOutcome"> <type>d:text</type> <default>OK</default> <constraints> <constraint type="LIST" name="alvexcourse:okOutcomeConstraint"> <parameter name="allowedValues"> <list> <value>OK</value> </list> </parameter> </constraint> </constraints> </property> </properties> <!-- Заменяем bpm:outcomePropertyName на наше новое свойство --> <overrides> <property name="bpm:outcomePropertyName"> <default>{http://alvexcore.com/prefix/alvexcourse}okOutcome</default> </property> </overrides> </type>
Шаг 2. Пакет локализации
Допустимый список значений, который мы создали в ограничении - это список возможных сообщений, которые могут отображаться пользователям на кнопках в форме задачи. Они хранятся в пакете локализации и переводятся на все нужные языки. Так как в нашей модели всего одно значение, мы добавляем в пакет локализации одну строку:
listconstraint.alvexcourse_okOutcomeConstraint.OK = Approve document
Создаем аналогичный файл, где эта строка будет переведена на русский:
listconstraint.alvexcourse_okOutcomeConstraint.OK = Согласовать документ
'listconstraint' - неизменный префикс ограничения по списку допустимых значений, 'alvexcourse_okOutcomeConstraint' - префикс модели и имя ограничения, которые разделены не ':', а '_', 'OK' - значение.
Step 3. Конфигурация Share
Теперь нам нужно показать новое свойство с примененным ограничением вместо ‘transitions’. Заменяем <show id=”transitions” /> на:
<show id="alvexcourse:okOutcome" />
И отобразить новое свойство, используя контрол ‘activiti-transitions.ftl’. Заменяем <field id=”transitions” set=”response” /> на:
<field id="alvexcourse:okOutcome" set="response"> <control template="/org/alfresco/components/form/controls/workflow/activiti-transitions.ftl" /> </field>
После того, как мы применили все изменения, надпись на кнопке стала правильной:
Но статус задачи в истории бизнес-процесса по-прежнему неправильный:
2. История бизнес-процесса
В пакет локализации модели задачи нужно добавить всего одну строку:
workflowtask.outcome.OK = Document approved
В русскоязычный пакет локализации:
workflowtask.outcome.OK = Документ согласован
'workflowtask.outcome' неизменный префикс, 'OK' - значение.
Теперь статус задачи в истории бизнес-процесса тоже правильный:
Материалы
Вы можете загрузить используемый в этой записи тип бизнес-процесса со всеми нужными файлами с GitHub.
Обратите внимание
Заметьте, что в пакете локализации в строках для истории бизнес-процесса отсутствует имя модели. Это означает, что при совпадении значений (id) с другими моделями задач, какие-то из значений будут затираться. Мы надеемся, что такое поведение системы будет исправлено в будущих версиях Alfresco.
Оригинал записи взят из блога компании ITD Systems.
Комментарии
03/09/2013 - 21:14
P.S.
Вышел долгожданный релиз 4.2.d, с чем и поздравляю всех)