6
Business Rule Task业务规则任务,就是可以针对一个任务流程定义多个规则,打个比方就是一个流程能通过的情况可能有多种,这里的很多种就可以抽象成业务规则。所以配置好业务规则可以使一个流程变得更加灵活。

为了说明Business Rule Task以及总结之前说明的各种任务组件,这里将绘制一个稍微复杂点的流程。

一、绘制流程图

流程图最终效果。

当审批金额小于1万元时,不问原因直接由财务审批,财务审批后回调Java代码执行回调逻辑。

当审批金额大于等于1万元时,经由审批决策判断该审批申请是否通过。

  • 通过,由财务审批。
  • 不通过,回调Java代码,执行回调逻辑。

image-20200323144237357.png

  • 财务审批节点添加变量passedgateway节点使用。

    image-20200323145012578.png

  • 配置审批决策节点

    image-20200324161208168.png

二、决策配置

  • 新建一个决策配置页(DMN)。

    image-20200323145420417.png

  • 配置决策名和id。

    image-20200323145604266.png

  • 配置决策内容。

    这里配置了两个输入项,一个返回项。

    • Role,角色 - 申请人角色
    • UseFor,资金用处,这里定义了两种可以被通过的用处:文具,电脑。一种不能被通过的用处:食物。
    • Passed,决策是否通过。

    image-20200323145701019.png

    image-20200323145729452.png

    最终决策配置。

    image-20200323150044366.png

三、配置回调类

/**
 * 审批同意委托类
 */
public class AgreeDelegate implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) throws Exception {
        System.out.println("审批【金额:" 
                           + execution.getVariablesLocal().get("amount") + "】已被同意。");
    }
}
/**
 * 审批拒绝委托类
 */
public class RejectDelegate implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) throws Exception {
        System.out.println("审批【金额:" + execution.getVariables().get("amount")
                + ", 角色:" + execution.getVariables().get("role")
                + ", 资金方向:" + execution.getVariables().get("userFor") + "】已被拒绝。");
    }
}

四、测试

场景一:金额小于1万元,审核通过

image-20200323150424215.png

访问http://localhost:8080/app/tasklist/default/#/查看任务列表。

image-20200323150524080.png

可以看到流程已经到了财务审批节点。

点击页面上的Formtable,将passed勾选上。

image-20200323150649178.png

点击Complete,查看系统日志。

image-20200323150805802.png

场景二:金额小于1万元,审核拒绝

访问http://localhost:8080/app/tasklist/default/#/,点击页面上的Formtable,将passed勾选取消。

image-20200323151252661.png

场景三:金额大于1万元,决策拒绝

image-20200323151424793.png

访问http://localhost:8080/app/cockpit/default/#/decisions查看决策列表。

image-20200323151556889.png

点击Approve Decision,查看决策详情。

image-20200323151636467.png

点击下方的ID,查看决策结果。

可以看到流程走到了编号为4的业务规则,下方的Inputstable中是我们启动流程实例时传入的决策变量值。
image-20200323151728692.png

查看系统日志。
可以看到资金方向为null,所以系统获取到的UseFor是业务规则里配置的值。

image-20200323151906940.png

场景四:金额大于1万元,决策通过

image-20200323152442288.png

访问http://localhost:8080/app/tasklist/default/#/查看任务列表,可以看到任务已经到了财务审批节点。

image-20200323152548364.png
再次访问http://localhost:8080/app/cockpit/default/#/decisions查看决策详情。

可以看到这次走到了业务规则2,返回结果为true

image-20200323152858743.png

image-20200323152830768.png
回到任务列表勾选passed

image-20200323153001375.png

查看系统日志。

image-20200323153028502.png


悠然自得
85 声望46 粉丝

随便写写