JBPM Activty深入解析

JBPM Activty深入解析

 

JBPM对于活动结点的架构设计有什么特别之处?

       JBPM将活动功能分为活动本身的行为(ActivityBehaviour)和活动作为流程元素所共有的一些东西(Activity);这样的架构设计很巧妙,既保证了各种活动自身的独特特性,也保证作为流程元素所共有的功能,保证了最大程度的代码重用!

       JBPM活动的类型大致分为自由执行结点和外部唤醒结点,可以满足现实中业务流程需要自动业务处理和需要人参与的业务处理要求。

       JBPM的活动本身是一种复合元素,其可以作为父活动而拥有众多的子活动。这样保证了JBPM提供的单一活动不能满足业务需求时候,我们可以进行活动组合!

       JBPM的活动可以定义变量,这样可以使我们在运行时动态传递数据,满足我们一些灵活的业务需求。

       JBPM的活动可以订阅相应的事件,当相应事件触发时,就会调用相应的事件监听器的方法。这样我们可以开发自己的事件监听器进行代码注入,灵活的实现自己的一些业务需求。

 

实现满足特定需求的活动

      如果jbpm提供的活动不能满足我们的业务需求,我们除了可以使用组合活动外,也可以实现我们自定义的活动,自定义活动根据我们的需要,我们可以继承JpdlActivityJpdlAutomaticActivityJpdlExternalActivity

      代码示例:

      

流程定义中引用自定义活动

扩展JBPM活动相关属性

       Jbpm的活动是以name作为标识的,这一点有点不是很好,在名字有重复时,可能会导致一些运行时错误!为了避免这一点,我们可以自己给活动结点扩展id属性,并在设计流程时自动生成id

      流程发布xsd验证id

      

      流程发布解析活动xml时,解析id属性      

JpdlBinding中添加代码


JpdlParser中的parseActivities方法中添加下列选中一行的代码

Activiy中添加接口

public String getId();

ActivityImpl中添加下列代码

private String id;

public String getId(){

  return this.id;

  }

 

public void setId(String id){

  this.id=id;

}

为了保证流程的顺利运行,我们需要提供通过Id查找活动的方法并替换掉原来的通过Name获取的方法,具体代码不在赘述!

posted @   无风听海  阅读(866)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示