JBPM中JPDL深入解析
JBPM中JPDL深入解析
流程引擎需要根据流程定义进行业务流程的流转,所以提供一种简单直观、易用方便、便于扩展的流程定义方式就显得直观重要了。JBPM提供了自己的一套流程定义语言JPDL,通过对JPDL的分析解决,我们可以了解其架构设计和运行机制,以便根据业务需求进行灵活的扩展。
JBPM中JPDL架构设计
1. 定义相关的xsd文件(比如jpdl-4.0.xsd、jpdl-4.2.xsd、jpdl-4.3.xsd、jpdl-4.4.xsd)。
Xsd定义了流程定义xml的整体架构,既xml中的元素和属性,其也就决定了我们定义的流程定义的xml的形式;同时在流程发布的时候也会使用xsd进行验证。
2. 定义并编码与xsd中定义的活动结点对应的binding类,用于解析相应流程定义xml 活动结点;
3. 在jbpm.jpdl.cfg.xml文件中定义最终负责管理解析xml的deployer;
JBPM中JPDL运行机制
1. XSD定义流程xml的元素和属性,控制了xml的整体结构
2. 引擎初始化时,加载jbpm.jpdl.bindings.xml中配置的binding类,为解析流程定义xml
做准备
3. 作好流程定义xml,并通过xsd进行整体的规则验证
4. 配置的xml解析类解析流程定义xml,同时根据相关的binding类解析不同的活动结点,并最终形成ProcessDifinitionImpl对象,并将该对象实例进行全局缓存
5. 定义的相关数据进行持久化
扩展新的活动类型
1. 在jpdl-4.4.xsd中添加下列代码
2. 开发自定义活动的binding类
这里需要注意的是Tag的值一定要与xsd中<element name=””>的name的值相等
3. 开发自定活动的ActivityBehavior类
4. 在jbpm.jpdl.bindings.xml中添加新增的binding类
Ok ,我们现在新增好了一个新的活动类型!对于扩展以后活动的属性,先前的文章已经介绍,不在赘述!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现