Flowable入门系列文章46 - 业务规则任务
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章46 - 业务规则任务相关的知识,希望对你有一定的参考价值。
1、描述
业务规则任务用于同步执行一个或多个规则。Flowable使用Drools Expert,Drools规则引擎来执行业务规则。目前,包含业务规则的.drl文件必须与定义业务规则任务的流程定义一起部署以执行这些规则。这意味着进程中使用的所有.drl文件必须打包在进程BAR文件中,例如任务表单等。有关为Drools Expert创建业务规则的更多信息,请参阅JBoss Drools的Drools文档。
如果您想插入自己的规则任务实现,例如,因为您想要使用Drools或者想要使用完全不同的规则引擎,则可以使用BusinessRuleTask上的类或表达式属性,表现如同一个ServiceTask。
2、图形表示法
业务规则任务通过表格图标可视化。
3、XML表示
要执行与流程定义相同的BAR文件中部署的一个或多个业务规则,我们需要定义输入和结果变量。对于输入变量定义,可以用逗号分隔一个过程变量列表。输出变量定义只能包含一个变量名称,用于将执行的业务规则的输出对象存储在流程变量中。请注意,结果变量将包含一个对象列表。如果默认未指定结果变量名称,则使用org.flowable.engine.rules.OUTPUT。
以下业务规则任务执行与流程定义一起部署的所有业务规则:
<process id="simpleBusinessRuleProcess">
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="businessRuleTask" />
<businessRuleTask id="businessRuleTask" flowable:ruleVariablesInput="${order}"
flowable:resultVariable="rulesOutput" />
<sequenceFlow sourceRef="businessRuleTask" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
业务规则任务也可以配置为只执行已部署的.drl文件中定义的一组规则。必须为此指定由逗号分隔的规则名称列表。
<businessRuleTask id="businessRuleTask" flowable:ruleVariablesInput="${order}"
flowable:rules="rule1, rule2" />
在这种情况下,只有rule1和rule2被执行。
<businessRuleTask id="businessRuleTask" flowable:ruleVariablesInput="${order}"
flowable:rules="rule1, rule2" exclude="true" />
在这种情况下,将执行与流程定义相同的BAR文件中部署的所有规则,除了rule1和rule2之外。
正如前面提到的另一个选择是钩住自己的BusinessRuleTask的实现:
<businessRuleTask id="businessRuleTask" flowable:class="${MyRuleServiceDelegate}" />
现在,BusinessRuleTask的行为与ServiceTask完全相同,但仍然保留了BusinessRuleTask图标,以使我们在此处进行业务规则处理。
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于Flowable入门系列文章46 - 业务规则任务的主要内容,如果未能解决你的问题,请参考以下文章