8

タスクの候補としてユーザーのリストを渡せるようにしたいと考えています。ユーザーはデータ リストから取得され、グループとしては使用できません。Activiti:candidateUsers は正しいアプローチのようです。

ユーザーが取得され、変数 ipw_reviwers に設定されていると仮定します。

<serviceTask id="alfrescoScripttask1" name="Alfresco Script Task" activiti:class="org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate">
  <extensionElements>
    <activiti:field name="script">
      <activiti:string>logger.log("IPW - setup task");
      execution.setVariable('ipw_reviwers', "tom, dick, harry");</activiti:string>
    </activiti:field>
  </extensionElements>
</serviceTask>

以下は、変数 ipw_reviewers を使用します

<userTask id="adhocTask" name="Adhoc Task" activiti:candidateUsers="${ipw_reviewers}" activiti:formKey="wf:activitiReviewTask">
  <extensionElements>
    <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
      <activiti:field name="script">
        <activiti:string>logger.log("IPW - create task");
        if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate);
                  if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string>
      </activiti:field>
    </activiti:taskListener>
  </extensionElements>
</userTask>

誰もタスクを表示または要求できません。リストにユーザーが 1 人しかいない場合、そのユーザーはタスクを要求できます。

activiti:candidateUsers が次のように宣言されている場合

activiti:candidateUsers="tom, dick, harry"

その後、3 人のユーザー全員がタスクを要求できます。

ユーザーのリストを変数で activiti:candidateUsers に渡すことはできますか?それとも別の方法を使用する必要がありますか?

4

3 に答える 3

5

http://activiti.orgから activiti 5.10 に問題が存在することを確認し、git リポジトリから activiti のソースを調べて、activiti フォーラムを検索しました。複数の候補ユーザーが必要な場合は、このフォーラムhttp://forums.activiti.org/en/viewtopic.php?f=6&t=3635&p=14187&hilit=で Collection<String> 変数を使用する必要があります。候補ユーザー#p14187 .

javascript から Collection<String> を execution.setVariable にする方法がわかりませんが (答えはありますか?)、groovy を使用しています

List<String> users = [ 'tom', 'dick', 'harry'] as String[];
execution.setVariable('ipw_reviewers', users);

このタスクを許可します

<userTask id="mytask" name="My Task" activiti:candidateUsers="${ipw_reviewers}">
</userTask>

希望通りに働くこと。

当分の間、Alfresco では、javascript を使用してデータ リストからユーザーのリストを検索し、それらを 1 つのタスクでカンマ区切りの文字列に配置し、それに続いて、文字列を List< に変換する groovy のスクリプト タスクを実行しました。 String> 次のタスクですぐに使用できます。

于 2012-12-02T13:07:53.493 に答える
1

review-pooled.bpmn20.xml など、Alfresco 内のデフォルトのワークフローを見ると、potentialOwner要素を使用していることがわかります。

ワークフローの抜粋:

<potentialOwner>
    <resourceAssignmentExpression>
    <formalExpression>${bpm_groupAssignee.properties.authorityName}</formalExpression>
    </resourceAssignmentExpression>
</potentialOwner>

したがって、これを開始するために bpm_groupAssignee アスペクトを使用しています。

<!--  Submit review to multiple people (as included in a group) -->
      <type name="wf:submitGroupReviewTask">
         <parent></parent>
         <mandatory-aspects>
            <aspect>bpm:groupAssignee</aspect>
         </mandatory-aspects>
      </type>

あなたの場合、必要に応じて<formalExpression>タグを簡単に変更できます。

于 2012-11-26T08:43:37.273 に答える
1

Nashorn (JDK8) Java スクリプト エンジンでは、リストを定義して変数として設定するために、スクリプト タスクの次のスクリプトが機能します。

var ArrayList = Java.type('java.util.ArrayList');
var list = new ArrayList();
list.add('a');
list.add('b');
list.add('c');
execution.setVariable('list', list);
于 2017-06-20T06:14:04.460 に答える