0

sequenceFlowワークフロー内のパッケージのコンテンツが特定の要件を満たしている場合にのみ、タスク トランジション (activiti) を実行できるようにしたいと考えています。基本的なシナリオは、タスク (「日付の割り当て」) の移行 (およびプロセスの終了) を許可する前に、パッケージのすべてのアイテムにカスタムの請求日を手動で設定することです。したがって、すべてのアイテムが処理されたかどうかを確認する必要があります。Alfresco Share が UI として機能します。

一見すると、私が欲しいのはconditionExpressionsequenceFlow のようです。これがいつ評価されるかははっきりしていますが、ユーザーとのやり取りの後で遅くなると思います。

デフォルトのメカニズムを使用してこれが不可能な場合は、カスタム タスク フォームまたはリポジトリ フォーム プロセッサの微調整を実装することで、この要件に対処する必要があります。

合理的な技術的解決策は何ですか?

4

1 に答える 1

0

より良いソリューションを提供できるように、ワークフロー コードを投稿してください。とにかく、最善の方法は、bpm パッケージ (ノード) に関連付けられたカスタム プロパティを変更する Activiti (Activiti BPMN を使用していることを願っています) タスク内に JavaScript の一部を実装し、条件式を使用してプロパティ値をチェックし、トランジションを実行します。例:

        <userTask id="activitiApprove" name="Document approve" activiti:assignee="${bpm_assignee.properties.userName}" activiti:formKey="wfstu:activitiApprove">
          <extensionElements>
            <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                <activiti:string>if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate);
                            if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;
    for (var i = 0; i &amp;lt; bpm_package.children.length; i++) {
        var doc = bpm_package.children[i];
        doc.properties['stu:customProperty']= "UPLOADED";
        doc.save();
    }
    logger.log("My Workflow - Transition from start to activitiApprove");</activiti:string>
              </activiti:field>
            </activiti:taskListener>
            <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                <activiti:string>execution.setVariable('wfstu_approveReject', task.getVariable('wfstu_approveReject'))
wfstu_approveReject = "OK";</activiti:string>
              </activiti:field>
            </activiti:taskListener>
          </extensionElements>
        </userTask>
        <sequenceFlow id="flow2" sourceRef="activitiApprove" targetRef="decisionApprove"></sequenceFlow>
        <exclusiveGateway id="decisionApprove" name="Approve decision"></exclusiveGateway>
        <sequenceFlow id="flow3" sourceRef="decisionApprove" targetRef="approve">
          <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfstu_approveReject == 'OK'}]]></conditionExpression>
        </sequenceFlow>
        <sequenceFlow id="flow4" sourceRef="decisioneApprovazione" targetRef="reject">
          <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfstu_approveReject == 'KO'}]]></conditionExpression>
        </sequenceFlow>

またはこれに似たもの。

于 2013-06-13T15:58:41.620 に答える