十七、Decision節點和DecisionHandler的使用
系統
1691 0
?<?xml version="1.0" encoding="UTF-8"?>
<process-definition
? xmlns="urn:jbpm.org:jpdl-3.2"? name="test6">
?? <start-state name="開始">
????? <transition name="提交給領導審批" to="decision1"></transition>
?? </start-state>
?? <decision name="decision1" expression="#{days gt 10 ? '提交給李四審批':'提交給王五審批'}">
????? <transition name="提交給李四審批" to="李四審批"></transition>
????? <transition name="提交給王五審批" to="王五審批"></transition>
?? </decision>
?? <task-node name="李四審批" >
? ??? ?? <task name="審批">
? ??? ? ??? ?<assignment actor-id="李四"></assignment>
? ??? ?? </task>
????? <transition name="" to="結束" ></transition>
?? </task-node>
?? <task-node name="王五審批">
????? <task name="審批">
? ??? ? ??? ?<assignment actor-id="王五"></assignment>
? ??? ?? </task>
????? <transition name="" to="結束"></transition>
?? </task-node>
?? <end-state name="結束"></end-state>
? ?
</process-definition>
?
在開始節點往下流轉到decision1時,當days變量大于10時,就自動再流轉到李四審批,否則流轉到王五審批。
?
?
當條件判斷非常復雜時,就需要使用DecisionHandler
?
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
? xmlns="urn:jbpm.org:jpdl-3.2"? name="test7">
?? <start-state name="開始">
????? <transition name="提交給領導審批" to="decision1"></transition>
?? </start-state>
?? <decision name="decision1">
?? ??? ?
<handler class="com.ygtim.domain.MyDecisionHandler"></handler>
????? <transition name="提交給李四審批" to="李四審批"></transition>
????? <transition name="提交給王五審批" to="王五審批"></transition>
?? </decision>
?? <task-node name="李四審批" >
?? ??? ? <task name="審批">
?? ??? ? ??? <assignment actor-id="李四"></assignment>
?? ??? ? </task>
????? <transition name="" to="結束" ></transition>
?? </task-node>
?? <task-node name="王五審批">
????? <task name="審批">
?? ??? ? ??? <assignment actor-id="王五"></assignment>
?? ??? ? </task>
????? <transition name="" to="結束"></transition>
?? </task-node>
?? <end-state name="結束"></end-state>
??
</process-definition>
?
?
public class MyDecisionHandler implements DecisionHandler {
???
??? /** Comment for <code>serialVersionUID</code> */
??? private static final long??? serialVersionUID??? = -6140889082116291459L;
???
??? @Override
??? public String decide(ExecutionContext executionContext) throws Exception {
??? ??? long days = (Long)
executionContext.getContextInstance()
.getVariable("days");
??? ??? if (days > 10) {
??? ??? ??? return "提交給李四審批";
??? ??? } else {
??? ??? ??? return "提交給王五審批";
??? ??? }
??? }
???
}
十七、Decision節點和DecisionHandler的使用
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元