Привет ТАК сообщество,
Мне не повезло, что я получил помощь на форумах Alfresco, и я надеюсь, что здесь будет больше. Мы создаем приложение на основе Alfresco и jBPM, и я определил рабочий процесс, но я либо определил его неправильно, либо что-то упустил, либо есть ошибки в интеграции Alfresco с jBPM, и мне нужна помощь, чтобы выяснить, какой именно и исправить. Вот проблема:
У меня расширенный рабочий процесс, и я пытаюсь запустить его из JavaScript. Вот код, который я использую для запуска рабочего процесса:
var nodeId = args.nodeid;
var document = search.findNode("workspace://SpacesStore/" + nodeId);
var workflowAction = actions.create("start-workflow");
workflowAction.parameters.workflowName = "jbpm$nmwf:MyWorkflow";
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name;
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("andyg")];
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflowAction.parameters["bpm:workflowDueDate"] = futureDate;
workflowAction.execute(document);
Это работает нормально, и электронная почта, отправленная с начального узла перехода, запускается просто отлично. Однако, когда я ищу рабочий процесс в моем списке задач, его там нет, но он находится в моем завершенном списке задач. Переход по умолчанию (единственный переход) из начального узла указывает на узел задачи, который имеет четыре перехода.
В рабочем процессе есть 8 задач и 22 перехода. Когда я использую консоль рабочего процесса, чтобы запустить рабочий процесс и завершить задачу запуска, она должным образом следует переходу начального узла по умолчанию к следующей задаче. Новая задача отображается в «Показать задачи», но не отображается в «Показать мои задачи» (очевидно, потому что задача была помечена как выполненная по какой-то причине, хотя ее нет в узле «Конец»). Задача:
task id: jbpm$111 , name: nmwf:submitInEditing , properties: 18
Если я "покажу переходы", это будет выглядеть так, как я ожидал:
path: jbpm$62-@ , node: In Editing , active: true
task id: jbpm$111 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 18
transition id: Submit for Approval , title: Submit for Approval
transition id: Request Copyediting Review , title: Request Copyediting Review
transition id: Request Legal Review , title: Request Legal Review
transition id: Request Review , title: Request Review
Я не хочу публиковать весь рабочий процесс, поскольку он большой, но вот первые два узла:
Первые дорожки:
<swimlane name="initiator"></swimlane>
<swimlane name="Content Providers">
<assignment actor-id="Content Providers" class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
<actor>#{bpm_assignees}</actor>
</assignment>
</swimlane>
Теперь узлы:
<start-state name="start">
<task name="nmwf:submitTask" swimlane="initiator"/>
<transition name="" to="In Editing">
<action>
<runas>admin</runas>
<script>
/* Code to send e-mail that a new workflow was started. I get this e-mail. */
</script>
</action>
</transition>
</start-state>
<task-node name="In Editing">
<task name="nmwf:submitInEditing" swimlane="Content Providers" />
<!-- I put e-mail sending code in each of these transitions, but none are firing. -->
<transition to="In Approval" name="Submit for Approval"></transition>
<transition to="In Copyediting" name="Request Copyediting Review"></transition>
<transition to="In Legal Review" name="Request Legal Review"></transition>
<transition to="In Review" name="Request Review"></transition>
</task-node>
Вот модель для этих двух узлов:
<type name="nmwf:submitTask">
<parent>bpm:startTask</parent>
<mandatory-aspects>
<aspect>bpm:assignees</aspect>
</mandatory-aspects>
</type>
<type name="nmwf:submitInEditing">
<parent>bpm:workflowTask</parent>
<mandatory-aspects>
<aspect>bpm:assignees</aspect>
</mandatory-aspects>
</type>
Вот псевдожурнал запуска рабочего процесса в консоли рабочего процесса:
:: deploy alfresco/extension/workflow/processdefinition.xml
deployed definition id: jbpm$69 , name: jbpm$nmwf:MyWorkflow , title: nmwf:MyWorkflow , version: 28
:: var bpm:assignees* person admin,andyg
set var {http://www.alfresco.org/model/bpm/1.0}assignees = [workspace://SpacesStore/73cf1b28-21aa-40ca-9dde-1cff492d0268, workspace://SpacesStore/03297e91-0b89-4db6-b764-5ada2d167424]
:: var bpm:package package 1
set var {http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/6e2bbbbd-b728-4403-be37-dfce55a83641
:: start bpm:assignees bpm:package
started workflow id: jbpm$63 , def: nmwf:MyWorkflow
path: jbpm$63-@ , node: start , active: true
task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 16
transition id: [default] , title: Task Done
:: show transitions
path: jbpm$63-@ , node: start , active: true
task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 17
transition id: [default] , title: Task Done
:: end task jbpm$112
signal sent - path id: jbpm$63-@
path: jbpm$63-@ , node: In Editing , active: true
task id: jbpm$113 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 17
transition id: Submit for Approval , title: Submit for Approval
transition id: Request Copyediting Review , title: Request Copyediting Review
transition id: Request Legal Review , title: Request Legal Review
transition id: Request Review , title: Request Review
:: show tasks
task id: jbpm$113 , name: nmwf:submitInEditing , properties: 18
:: show my tasks
admin:
[there is no output here]
Я исходил из того, что назначаемые мной bpm: перед началом рабочего процесса первоначально передаются первому узлу задачи «В редактировании». Очевидно, что уполномоченные находятся на объекте задачи, а не на объекте рабочего процесса. Я добавил аспект назначения в задачу начального состояния, чтобы он мог их удерживать (после того, как у меня возникла проблема; изначально их там не было) и, возможно, они все еще находятся там, но начальное состояние закончилось еще до того, как я получил контроль Вернемся из веб-скрипта (не то, чтобы он помог, если бы он не был завершен, мне нужно, чтобы он находился в режиме «В редактировании», поскольку начальное состояние используется только для регистрации того, что рабочий процесс запущен).
Меня всегда смущало, что свойства, которые мне нужно установить для каждой задачи, необходимо запрашивать до ее ввода (когда вы выбираете переход, вы должны предоставить данные для следующей задачи, прежде чем сможете на самом деле перейдите к следующему заданию, так как вам нужно проверить, что у вас есть все необходимые данные (сначала , а затем сигнализировать о переходе). Однако код для запуска рабочего процесса является асинхронным и, следовательно, не возвращает ни запущенный рабочий процесс, ни текущую задачу (которая в моем случае будет «В редактировании»). Так или иначе, вы не можете установить переменные, такие как bpm: assignees и bpm: dueDate.
Интересно, это проблема со списком задач пользователя. Я устанавливаю сотрудников в списке свойств, но, возможно, эти сотрудники переходят к задаче начального состояния и не переходят к задаче «В редактировании»?
Обратите внимание, что - это мой первый рабочий процесс jBPM, поэтому, пожалуйста, не думайте, что я знаю, что делаю. Если вы видите что-то, что выглядит не так, возможно, это так, а я просто не знаю об этом.
Заранее спасибо за любой совет или помощь,