質問

こんにちは、コミュニティ、

私はAlfrescoフォーラムで助けを得ることができませんでした、そして私はここでもっと期待しています。 AlfrescoとJBPMに基づいてアプリケーションを構築しており、ワークフローを定義しましたが、間違っているか、何かが欠けているか、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);

これにより、Start Nodeのデフォルトのトランジションファイアから送信された電子メールが正常に実行されます。しかし、私のタスクリストでワークフローを探しに行くとき、それはそこにありませんが、それは私の中にあります 完了しました タスクリスト。スタートノードからのデフォルトの遷移(唯一の遷移)は、4つの遷移があるタスクノードのポイントです。

ワークフローには8つのタスクと22の移行があります。ワークフローコンソールを使用してワークフローを起動し、開始タスクを終了すると、次のタスクへのデフォルトの開始ノードトランジションに適切に従います。新しいタスクは「ショータスク」に表示されますが、「show myタスク」に表示されません(どうやらタスクが「エンド」ノードではありませんが、何らかの理由で完了したためです)。タスクは次のとおりです。

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:最初に「編集中」の最初のタスクノードに渡されると仮定しています。明らかに、譲受人はタスクオブジェクト上にあり、ワークフローオブジェクト上ではありません。譲受人の側面をスタートステートタスクに追加して(問題が発生した後、最初はそこにいなかった)、おそらく彼らはまだそこに座っているかもしれませんが、コントロールされる前にスタートステートは終了しましたWebスクリプトから戻って(終了しなかった場合に役立つわけではありませんが、スタートステートはワークフローが開始されたことのログにのみ使用されるため、「編集」にする必要があります)。

各タスクに設定する必要があるプロパティを入力する前に要求する必要があることを常に混乱させてきました(トランジションを選択する場合は、次のタスクに実際に移動する前に、次のタスクにデータを提供する必要があります。必要なデータをすべて持っていることを検証する必要があります 最初 そして、遷移を通知します)。ただし、ワークフローを開始するコードは非同期であるため、開始ワークフローまたは現在のタスク(私の場合は「編集中」になります)を返しません。どちらにしても、BPM:譲受人やBPM:Duedateなどの変数を設定することはできません。

これがユーザータスクリストの問題であるのだろうか。私はプロパティリストに譲受人を設定していますが、おそらくそれらの譲受人はスタートステートタスクに行き、「編集」タスクに渡されていませんか?

これに注意してください 私の最初のJBPMワークフローなので、自分が何をしているのか知っていると思い込まないでください。あなたが見えるものを見るなら、それはおそらくそうであり、私はそれを知りません。

アドバイスや助けを前もってありがとう、

役に立ちましたか?

解決

そのため、私の問題は、ワークフローがそれらの譲受人のいずれかと移行できるようにしながら、複数の譲受人を行う方法を誤解していることが判明しました。 JBPMは単純なモデルでこれをサポートしていないことがわかります。複数の譲受人を割り当てるよりも多くの仕事をしなければなりません。私はインターネットで見つけた悪い例に従っていて、これがどのようにこれについて誤って仮定したかをしました。作品。

JBPMには並列タスク(フォークを使用)の概念がありますが、通常のアクションでは、ワークフローが移行する前にすべての譲受人がタスクを完了する必要があります。これを解決する正しい方法は、すべての譲受人にタスクをフォークすることですが、譲受人がタスクを完了すると、譲受人がタスク(node.noutofm)を完了する必要がある数を保存する変数にパッチをかけることがわかります。すべての譲受人がそれを完了する前に、jbpmを馬鹿にしてタスクを完了することができます(これにより、yの譲受人がxのみを完了する必要があります)。

更新されたコードを投稿するのではなく、この問題を解決するために使用した記事を次に示します。

http://forums.alfresco.com/en/viewtopic.php?f=30&t=8691

http://forums.alfresco.com/en/viewtopic.php?f=34&t=5189

http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/workflow/jbpm/foreachfork.html

http://wiki.alfresco.com/wiki/workflowadministration#for_each_fork

他のヒント

よくわかりませんが、あなたは欲しいと思います <pooledactors> ではなくここに <actor>.

たぶんこれがあなたのWFが期待どおりに機能しない理由です。

<actor>#{bpm_assignees}</actor>

また、プールされたタスクであるため、タスクはプールされたタスクではなく、プールされたタスクにあるべきだと思います(複数の譲受人を設定しようとしているからです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top