(三)JDEasyFlow-流程引擎模块使用指南

使用指南 

入门实践

       在源码的test目录下有quickstart测试用例(easyflow\easyflow-flow\src\test\java\com\jd\easyflow\flow\quickstart\QuickStartTest.java),可直接运行或调试以了解使用方式和运行原理。

具体实践步骤如下:

1、代码中引入easyflow-flow jar包

以maven为例:

<dependency>
        <groupId>com.jd.easyflow</groupId>
        <artifactId>easyflow-flow</artifactId>
        <version>{替换为最新版本}</version>
</dependency>

2、编写流程定义文件

以node001->node002→node003的执行顺序为例:

{"id": "quickstart_001", "name": "Quick Start 001",
"nodes": [
  {"id": "node001","name": "Node001","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart001Node01Action()"},"start": true,"post": {"to": "node002"}},
  {"id": "node002","name": "Node002","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart002Node01Action()"},"post": {"to": "node003"}},
  {"id": "node003","name": "Node003","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart003Node01Action()"}}
]
}

其中QuickStart001Node01Action等为java节点动作类

3、编写应用启动时加载流程引擎的代码

  

FlowEngineImpl flowEngine = new FlowEngineImpl();
flowEngine.setFlowPath("classpath:flow/quickstart/quickstart_001.json");
flowEngine.init();

Spring环境可直接定义FlowEngineImpl bean.

 4编写具体流程调用执行的代码

FlowParam param = new FlowParam("quickstart_001");
FlowResult result = flowEngine.execute(param);

完整测试用例的执行结果打印如下:

[main            ] INFO  FlowEngineImpl          - Start parsing definition files:easyflow-flow/target/test-classes/flow/quickstart/quickstart_001.json
[main            ] INFO  FlowEngineImpl          - SART EXECUTE FLOW, flowId:quickstart_001 nodeIds:null
[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node001
[main            ] INFO  QuickStart001Node01Action  - Execute Node 001
[main            ] INFO  BaseFlowRunner          - NEXT NODES:node002
[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node002
[main            ] INFO  QuickStart002Node01Action  - Execute Node 002
[main            ] INFO  BaseFlowRunner          - NEXT NODES:node003
[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node003
[main            ] INFO  QuickStart003Node01Action  - Execute Node 003
[main            ] INFO  BaseFlowRunner          - NEXT NODES:
[main            ] INFO  QuickStartTest          - Execute finish, current node is:node003

流程定义元素和参数说明

整体配置项说明

一级元素二级元素三级元素名称说明
id流程ID全局唯一
name流程名称
nodes节点列表
id节点ID流程定义内唯一
name节点名称
action节点动作
exp执行的 spel 表达式
createExp节点动作的创建表达式返回结果必须为 NodeAction 接口的实现
flow子流程定义子流程定义
flowId子流程 ID子流程 ID
startNodeId子流程开始节点 ID子流程开始节点 ID,格式为字符串或字符串数组
post节点后置处理器主要控制后继节点逻辑,目前支持: 固定后继节点 条件后继节点 动态计算 具体配置方式见后
listeners监听器列表
createExp监听器创建表达式
filters流程过滤器列表
nodeFilters节点过滤器列表
nodePreHandlerFilters节点前置处理过滤器
createExp过滤器创建表达式
nodeActionFilters节点动作过滤器列表
createExp过滤器创建表达式
NodePostHandlerFilters节点后置处理过滤器
createExp过滤器创建表达式
runner流程执行器默认为串行执行器,可配置为多线程执行器。
createExp流程执行器表达式
properties流程属性
flow.recordHistory是否记录流程执行的节点历史默认为是。如果一次流程运行执行非常多次(千万或亿或死循环,一般不会发生),需要设为 false

post配置说明

post有如下几种配置规范:

一、固定值

1、{"to":XXX},到to节点

二、条件类

2、{"when":XXX, "to":XXX},当when条件满足时到to节点

3、{"conditions":[{"when":XXX, "to":XXX},{"when":XXX, "to":XXX}]},多个条件

when为el表达式

条件类可配置参数conditionType,取值有exclusive/inclusive,默认为exclusive,只要一个分支条件判断成功,则判断逻辑终止;

条件类可配置参数defaultTo,当条件没有满足的时的默认分支

三、创建表达式

4、{"createExp":XXX},流程解析时执行此表达式,计算值为一个NodePostHandler的实现类

四、表达式

5、{"exp":XXX},流程运行时执行此表达式,计算值为to配置(见下)可接受的类型

to的配置说明

如果为字符串,如果以开头,则代表索引值,取值有first, last,previous, $next,否则代表固定的节点ID
如果为整数,则代表节点索引值
如果为List,则代表字符串或整数值列表
如果为Map,则可以配置"exp":"XXX",根据EL值动态计算后继节点,具体的值类型为字符串、整数或List

配置示例见test目录相关用例。

SPEL表达式固定变量

流程执行过程中变量

名称类型说明
contextFlowContext流程上下文
paramFlowParam流程参数
bizParam依赖业务传入FlowParam中的param
paramDataMap对应FlowParam中的dataMap
resultFlowResult流程结果
bizResult依赖业务传入FlowResult中的result
nodeContextNodeContext节点上下文
actionResult依赖具体接口实现节点动作的执行结果

其他

过滤器和监听器使用说明

过滤器和监听器均为横向控制的方式,区别在于监听器侧重监听,对流程的控制有限,过滤器侧重过滤,可以捕获异常或流程处理等。

流程异常处理

默认情况下,流程引擎不捕获和封装异常,业务逻辑中抛出的异常直接抛出;对于多线程执行场景下,如果多个节点同时有异常,会任选其一抛出,同时可以从流程上下文中获取所有异常。

对于节点异常可以通过节点过滤器统一捕获做业务逻辑处理,或者可通过流程过滤器统一捕获做业务逻辑处理。

===============================

下一章将专题介绍流程引擎的实现原理

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 鼎捷EasyFlow注册是指在使用鼎捷EasyFlow工作流程管理系统时所需要的注册过程。鼎捷EasyFlow是一款专业的工作流程管理软件,能够有效地帮助企业实现流程自动化和规范化。 首先,用户需要访问鼎捷公司官方网站,并在网站上找到EasyFlow注册页面。 接着,用户需要填写注册页面上的相关信息,包括用户名、密码、联系方式等,以便于在日后登录和使用鼎捷EasyFlow系统。 注册完成后,用户需要按照系统提示进行身份验证,一般是通过邮箱或手机号码接收验证码进行验证。 完成身份验证后,用户需要同意鼎捷EasyFlow的用户协议和隐私政策,确保遵守相关的法律法规和规定。 最后,用户需要确认注册信息,检查无误后,点击提交按钮进行注册。 注册成功后,用户将获得一个唯一的账号,可以使用该账号和密码登录到鼎捷EasyFlow系统。用户可以根据自己的需要和权限,开始创建、管理和执行工作流程,实现企业的流程自动化和规范化。鼎捷EasyFlow系统提供了丰富的功能和工具,以提高工作效率和管理效果。 总之,鼎捷EasyFlow注册是一个简单而重要的过程,通过注册,用户能够获得登录权限并开始使用鼎捷EasyFlow工作流程管理系统,有效地提升企业的工作效率和管理水平。 ### 回答2: 鼎捷easyflow是一款企业应用软件,用于实现企业内部审批流程的自动化管理。想要使用鼎捷easyflow,首先需要进行注册。 鼎捷easyflow的注册流程非常简便快捷。首先,在网页浏览器中搜索鼎捷easyflow官方网站,并进入官方注册页面。接着,填写所需的注册信息,如用户名、密码、邮箱等。请确保填写的信息准确无误。完成填写后,点击注册按钮进行提交。 注册信息提交后,系统将会发送一封验证邮件至您填写的邮箱。打开邮件,并点击其中包含的验证链接,完成验证过程。验证成功后,您将获得一个注册成功的提示,并获得登录账号和密码。 使用注册成功的账号和密码,在鼎捷easyflow官方网站上登录即可开始使用该软件。登录后,您可以根据自身需求,创建审批流程、制定审批规则等,实现日常审批流程的自动化管理。 总之,鼎捷easyflow的注册过程非常简单,只需填写相关信息和进行邮箱验证即可完成注册。注册成功后,您将获得一个登录账号,可以在官方网站上登录并开始使用鼎捷easyflow软件。祝您使用愉快!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值