SO コミュニティの皆様、こんにちは。
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);
これは正常に実行され、開始ノードのデフォルト トランジションから送信された電子メールは正常に起動します。ただし、タスク リストでワークフローを探しに行くと、そこにはありませんが、完了したタスク リストにはあります。開始ノードからのデフォルト トランジション (唯一のトランジション) は、4 つのトランジションを持つタスク ノードを指します。
ワークフローには 8 つのタスクと 22 のトランジションがあります。ワークフロー コンソールを使用してワークフローを開始し、開始タスクを終了すると、デフォルトの開始ノード遷移に従って次のタスクに適切に移行します。新しいタスクは「show tasks」に表示されますが、「show my tasks」には表示されません (明らかに、「end」ノードにはありませんが、何らかの理由でタスクが完了としてマークされたためです)。タスクは次のとおりです。
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
ワークフロー全体は大きいので掲載したくありませんが、最初の 2 つのノードを次に示します。
まずスイムレーン:
<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>
これら 2 つのノードのモデルは次のとおりです。
<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:assignees が最初のタスク ノード "編集中" に渡されると想定しています。明らかに、担当者はワークフロー オブジェクトではなく、タスク オブジェクトにいます。担当者のアスペクトを開始状態タスクに追加して、(問題が発生した後、最初はそこにいなかった) 彼らを保持できるようにし、おそらくまだそこに座っている可能性がありますが、制御を取得する前に開始状態が終了しましたWeb スクリプトから戻します (終了していなくても役立つわけではありません。開始状態はワークフローが開始されたことを記録するためにのみ使用されるため、「編集中」である必要があります)。
各タスクに設定する必要があるプロパティは、タスクに入る前に要求する必要があることにいつも戸惑いました (トランジションを選択するときは、次のタスクに実際に移動する前に、次のタスクのデータを提供する必要があります)。最初に必要なデータがすべて揃っていることを確認してから、移行を通知する必要があります)。ただし、ワークフローを開始するコードは非同期であるため、開始されたワークフローまたは現在のタスク (私の場合は「編集中」) を返しません。したがって、どちらの方法でも、bpm:assignees や bpm:dueDate などの変数を設定することはできません。
これはユーザー タスク リストの問題でしょうか。プロパティ リストで担当者を設定していますが、担当者が開始状態タスクに移動し、「編集中」タスクに渡されない可能性があります。
これは私の最初の jBPM ワークフローであることに注意してください。見た目がおかしいと感じた場合は、おそらくそうであり、私にはわかりません。
アドバイスやヘルプを事前にありがとう、