`

十七、Decision节点和DecisionHandler的使用

 
阅读更多



 <?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 "提交给王五审批";
        }
    }
   
}

  • 大小: 42.3 KB
分享到:
评论

相关推荐

    State Decision Task活动详解

    综上所述,State、Decision 和 Task 节点是工作流管理中非常重要的概念。State 节点用于实现流程的暂停与恢复;Decision 节点用于实现基于条件的流程分支处理;而 Task 节点则用于任务分配和用户交互。通过这些节点...

    super-decision 使用说明

    这些知识点共同构成了文档《super-decision 使用说明》的核心内容,为读者理解如何在复杂环境中应用AHP和ANP提供了详细的指导,并介绍了相应的软件工具。通过这些知识,决策者可以更好地处理那些涉及复杂关系和动态...

    windchill工作流节点介绍

    3. **决策节点(Decision Node)**:根据预设的条件或规则,决策节点决定流程的走向。它可以基于输入数据(如用户选择、任务结果等)来分支到不同的路径,以适应不同的情景。 4. **合并节点(Join Node)**:当多个...

    JBPM4之State、Decision 、Task活动.doc

    在上述示例中,我们使用了 JBPM4 提供的 API 来启动流程实例,获取流程实例的 Id 和流程定义 Id,并判断当前流程实例是否位于某个节点上。最后,我们使用 signalExecutionById 方法来继续执行流程到下一个节点。 五...

    用SuperDecision进行网络层次分析法(ANP)的应用实例资料.pdf

    5. 经济性因素包括桥梁材料费用、制造费用、安装费用和使用维护费用等。 6. 耐久性因素是桥梁的使用寿命。 六、结论 本文通过对ANP的理论和实践应用进行了介绍,并对应急桥梁设计方案进行了评估。ANP是一种非常...

    dtree支持动态添加,删除节点

    在IT领域,决策树(Decision Tree,简称dtree)是一种常用的数据挖掘和机器学习算法,它通过构建树状模型来解决分类和回归问题。在这个场景中,提到的"dtree支持动态添加、删除节点"意味着该决策树实现允许在构建...

    使用Decision Cube进行数据的决策分析

    从粒度分析的角度出发,对数据仓库、粒度、Delphi 7中提供的Decision Cube决策组件进行了介绍。然后 举例说明了如何在数据仓库中按时间段综合数据的粒度...并对使用Decision Cube这组 组件需要注意的问题也进行了总结。

    Algorithm-DecisionTree.zip

    此外,还需要管理节点间的连接,例如使用指针来链接父节点与子节点。 2. **特征选择**:在构建决策树时,需要选择最优特征进行划分。这可以通过计算各个特征的信息增益或基尼指数来完成。信息增益衡量了特征划分后...

    节点树生成

    2. **Dtree**:Dtree可能是指决策树(Decision Tree)的简称,但在这个上下文中,它更可能是一个特定的实现或库,用于构建和操作节点树。这个库可能提供了节点的创建、删除、编辑等功能,并可能支持自定义节点属性和...

    Decision Making Under Uncertainty

    Decision Making Under Uncertainty Theory and Application. 2015 By Mykel J. Kochenderfer With Christopher Amato, Girish Chowdhary, Jonathan P. How, Hayley J. Davison Reynolds, Jason R. Thornton, Pedro ...

    decision tree 分类程序

    1. `decision_tree.py`:主要的Python代码,包含了决策树的实现和使用示例。 2. `data.csv`:可能包含用于训练和测试的样本数据,通常有特征列和目标列。 3. `README.md`:项目说明文件,可能详细解释了如何运行代码...

    DecisionTree.rar

    为了运行和使用这段代码,你需要了解基础的编程知识,例如Python(因为许多数据科学和机器学习库都是基于Python的)。你可以按照以下步骤操作: 1. **解压文件**:使用解压缩工具打开"DecisionTree.rar"并提取内容。...

    Decision Tree Excel 插件,决策树

    4. **构建决策树**:使用TreePlan,用户可以通过输入决策节点、机会节点(表示随机事件)、概率值和预期收益,直观地创建决策树结构。 5. **剪枝与简化**:决策树可能会过于复杂,导致过拟合。TreePlan可能包含剪枝...

    Decision_Tree_algorithm(Java).rar_decision tree_tree

    3. 决策树节点类:设计决策树节点类,包括内部节点(存储特征信息)和叶节点(存储类别标签)。 4. 构建树:通过递归调用构建决策树的函数,每次选择最优特征并生成子节点。 5. 预测:根据构建好的决策树,实现...

    An Introducton to Binary Decision Diagrams

    二进制决策图(Binary Decision Diagrams,简称BDD)是一种数据结构,用于表示和操作布尔函数。在计算机科学和电子工程中,特别是在形式验证、逻辑电路设计与分析、组合优化问题等领域,BDD被广泛使用。它们提供了一...

    decision tree(matlab)

    决策树的结构由一系列的内部节点(代表特征测试)和叶节点(代表类别)组成。内部节点的分支取决于所选特征及其对应的分割点。决策过程就像是一系列的问题,直到达到叶节点,从而得出分类结果。 从压缩包文件名称...

    decision_trees-master.zip_decision tree

    在本项目"decision_trees-master.zip"中,我们可以深入学习和理解决策树的工作原理及其在实际问题中的应用。 1. **决策树的基本概念**:决策树是由节点和边构成的树形结构,其中根节点代表整个数据集,内部节点表示...

    为什么 Xgboost中树的叶节点得分可以用来衡量树的复杂度? - 知乎1

    决策树由内部节点(分裂节点)和叶节点组成。内部节点根据特征值进行分割,将数据集分成不同的子集,而叶节点则为每个子集赋予一个得分,这个得分就是叶节点得分。当数据点落在某个叶节点上时,该得分就会被用作对...

    Decision-Tree-classifier15.rar_decision tree_train

    为了克服这个问题,可以使用剪枝技术,如预剪枝(在训练过程中设定提前停止条件)和后剪枝(在训练完成后删除非必要节点)。此外,数据不平衡也可能影响模型效果,这时可以采用重采样策略(如过采样、欠采样)来平衡...

Global site tag (gtag.js) - Google Analytics