zoukankan      html  css  js  c++  java
  • JBPM流程部署之流程定义实体对象分析

    JBPM流程部署之流程定义实体对象分析

     

          JBPM中运行时使用的流程定义实体对象是ProcessDefinitionImpl,流程定义实体对象是流程流转的路线图,他是根据我们对jpdl的解析形成的,他是在我们发布流程的同时,或者是首次发起本版本的流程实例的时候进行实例化;由于流程定义实体的初始化需要动态的解析jpdl,所以相对来说还是很耗费资源的,所以ProcessDefinitionImpl一旦形成流程引擎就会将其缓存起来,以后就会直接从缓存中获取。
           ProcessDefinitionImpl在流程引擎具有很重要的作用,除了作为流程流转的依据外,同时也需要具有一些别的特别重要的功能,那么现在我们来看看JBPM中ProcessDefinitionImpl的UML类库,同时让我们来领略一下JBPM中流程实体对象的架构设计思想

          

          下面我们将根据流程定义的功能来分析上图的设计

          流程定义元素
          流程定义是由流程定义元素构成,一般来说(狭义)流程定义是由活动节点组成的,但是从广义上来说,流程定义是由流程元素(ProcessDefinitionImpl和ActivityImpl)组成的;同时从类图上看,我们可以看到同样作为流程元素,ProcessDefinitionImpl和ActivityImpl都具有作为流程元素所应具有的功能特性,只不过ProcessDefinitionImpl作为流程定义本身来说需要具有创建并初始化流程实例的功能特性。同时ProcessDefinitionImpl只能作为流程定义的首节点,ActivityImpl作为前者的嵌套活动节点。所以他们都继承了ProcessElementImpl
          可被监听对象
          作为流程定义元素,他们代表了流程流转的不同步骤,同时流程的流转执行是片段式的,同一个流程元素不同时间会处于不同的执行状态,JBPM为流程元素内置了开始和结束事件,我们可以在节点开始时候进行一些业务数据资源的初始化等工作,同时在节点结束事件中完成资源的释放销毁等。所以两者都继承了ObservableElementImpl;
          数据作用域
          如同java中的变量有自己的作用域一样,每个流程元素都承载了一些数据和资源,他们只在这个节点及其子节点的范围内有效,超出这个范围就会被销毁;JBPM为节点定义的变量和定时器,如果我们在ProcessDefinitionImpl中定义了他们,那么我们可以在所有的节点中使用他们,这个时候可以说他们就是全局变量。所以两者都继承了ScopeElementImpl
          复合流程元素
          流程定义本身来说就具有树的特点,所以作为流程节点需要具有复合元素的特性,其可以作为其他节点的承载容器。所以两者都继承了CompositeElementImpl;
          可创建流程实例
          ProcessDefinitionImpl是流程实例运转的依据,同时也是流程实例的创建者,所以ProcessDefinitionImpl继承了ClientProcessDefinition;
     
          通过以上分析,我们可以看到JBPM根据流程元素的共同功能特性对ProcessDefinitionImpl和activityImpl进行抽象提取,达到了代码的重用;根据流程土元素的功能特性抽取不同的接口和类进行封装和实现,在保证功能单一的情况下,我们可以根据方法的不同功能传递同一对象的不同类型作为参数,在一定的程度上保证了数据封装性和可扩展性;总之,这些都体现了良好的可扩展性和易维护性

  • 相关阅读:
    编译原理入门以及战大作业心得(2)汇编简易入门 康某
    简易聊天对话框(源码)
    用js做数字字母混合的随机四位验证码
    HTML5基础
    javascript基础
    jquery.AutoComplete 仿百度文本框感应
    DropDownlist显示树状
    利用 System.Net.Mail 实现邮件发送功能
    sql 根据字段值,查找属于哪个表中的哪个字段
    sql 查看数据库中的各表的大小
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/2155924.html
Copyright © 2011-2022 走看看