zoukankan      html  css  js  c++  java
  • 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获取的方法,具体代码不在赘述!

  • 相关阅读:
    Python-Basis-9th
    Python-Basis-8th
    Python-Basis-7th
    Ubuntu-Basis-4th
    Ubuntu-Basis-3rd
    Ubuntu-Basis-2nd
    Ubuntu-Basis-1st
    疯狂java第五章&&第六章-面向对象
    疯狂java第四章-流程控制与数组
    疯狂java第三章-数据类型和运算符
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/jbpmactivity.html
Copyright © 2011-2022 走看看