日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Activiti多人会签例子

發(fā)布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Activiti多人会签例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Activiti中提供了多實例任務(for-each)將多實例應到到UserTask中可以實現(xiàn)會簽功能。

Multi-instance?(for?each)? Description? A?multi-instance?activity?is?a?way?of?defining?repetition?for?a?certain?step?in?a?business?process.?In?programming?concepts,?a?multi-instance?matches?the?for?each?construct:?it?allows?to?execute?a?certain?step?or?even?a?complete?subprocess?for?each?item?in?a?given?collection,?sequentially?or?in?parallel.?A?multi-instance?is?a?regular?activity?that?has?extra?properties?defined?(so-called?'multi-instance?characteristics'')?which?will?cause?the?activity?to?be?executed?multiple?times?at?runtime.?Following?activities?can?become?a?multi-instance?activity:


一.多實例用戶任務的XML表示:

<userTask?id="task"?name="多實例任務"><multiInstanceLoopCharacteristics?isSequential="false"><loopDataInputRef>assigneeList</loopDataInputRef><inputDataItem?name="assignee"></inputDataItem><!--?userIdList[user1,user2,user3]??--><completionCondition>${nrOfCompletedInstances/nrOfInstances?>=?0.6}</completionCondition></multiInstanceLoopCharacteristics> </userTask>

在每個多實例創(chuàng)建后都會有3個變量,請看數(shù)據(jù)庫中act_ru_variable表的截圖:

nrOfInstances 實例總數(shù)

nrOfActiveInstances 當前還沒有完成的實例

nrOfCompletedInstances 已經完成的實例個數(shù)

?multiInstanceLoopCharacteristics 是用了指定用戶任務為多實例任務,isSequential 指定多實例是按照并行或者串行的方式進行,如果使用串行方式nrOfActiveInstances 變量始終是1 。isSequential串行并行是針對于assigneeList中的用戶集合來說的,如果是并行assigneeList集合中的每個用戶按照順序執(zhí)行。

變量assigneeList,我們可以在執(zhí)行這個任務之前進行賦值:

Map<String,?Object>?variables?=new?HashMap<String,?Object>();variables.put("pass",?Boolean.parseBoolean(pass));List<String>?assigneeList?=?Arrays.asList("10001#1001","10001#1002","10001#1003");?variables.put("assigneeList",?assigneeList);TaskService?taskService?=?ActivitiUtils.getTaskService();taskService.complete(taskId,?variables);


?loopDataInputRef 指定一個流程變量的引用,該變量是一個List,可以在發(fā)起或這執(zhí)行任務之前作為流程變量放到引擎中,該list中的每一個元素將創(chuàng)建一個任務。元素的值通過 inputDataItem 元素的指定的變量來獲取,如 在這個實例中ist<String> assigneeList = Arrays.asList("10001#1001","10001#1002","10001#1003");??這會創(chuàng)建3個用戶任務,每個用戶任務中都有一個 assignee 的變量,來分別得到list中的值。但是需要注意:選擇isSequential串行時一個任務完成后創(chuàng)建另一個任務,并不是一次性創(chuàng)建3個任務。

assigneeList 的值程序序列化后保存到act_ge_bytearray表中,請看圖:


?completionCondition 結束任務的條件,該示例中是任務完成 60% 結束。


在第一步中我們知道變量 assignee 是 會簽人員的標識,只需要將指定代理人的地方用表達式來指定 assignee 變量就行了。? 完整XML:

<userTask?id="thisTask2"?name="myTask2"><humanPerformer><resourceAssignmentExpression><formalExpression>${assignee}</formalExpression></resourceAssignmentExpression></humanPerformer><multiInstanceLoopCharacteristics?isSequential="false"><loopDataInputRef>assigneeList</loopDataInputRef><inputDataItem?name="assignee"></inputDataItem><!--?userIdList[user1,user2,user3]??--><completionCondition>${nrOfCompletedInstances/nrOfInstances?>=?0.6}</completionCondition></multiInstanceLoopCharacteristics> </userTask><span?style="white-space:?pre;"> </span>

這里附上圖:




總結

以上是生活随笔為你收集整理的Activiti多人会签例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。