• JBPM IOC实现


     什么是IOC

           IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓控制反转的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

          IOC的优点和缺点

          IOC有利于降低组件之间的依赖,对于改变子类实现,只需要更改xml就可以了,类似于热插拔。

          IOC本身也有其缺点,组件的实例化步骤变复杂了;同时需要依赖反射,影响对象构建效率。

          JBPM IOC实现

               JBPM自己实现了一套IOC方案,下面分步骤详述JBPMIOC实现方案。

              Xml配置文件

              jbpm.wire.bindings.xml:包括jbpm流程引擎用到的各种对象的binding类。

                  jbpm.jpdl.bindings.xml: 包括流程引擎执行中用到的活动的binding类。

                  jbpm.cfg.xml:jbpm的根配置文件,引入jpbm所需的所有配置文件。这是jbpm引擎运行           的代码执行入口

                  代码实现需要的类

                  各种binding类:定义在配置文件中使用的tag(如hibernate-session;解析配置文件

    xml,并将相关的配置数据设置到实例化的响应的Descriptor中。

                  各种descriptor类:根据自己的相关数据,利用反射构建相关的对象实例并返回。    

                  BindingParser: 解析jbpm.wire.bindings.xml,并构建相应的binding实例。

                  WireParser:解析jbpm.cfg.xml,通过binding构建descriptor

                  WireContxt:IOC的控制容器,负责实例化相关的对象。

     

     

           综述

    虽然jbpm实现的IOC不够彻底,但是总体的思想还是很符合IOC思想的!同时流程引擎对流程定义的解析也使用了相似的原理,感兴趣的网友可以自己研究!

     

     

                                                                                                                                                                            无风听海

     

                                                                                                                                                                                               2011-04-16

           

     

     

  • 相关阅读:
    boostrap各种设备大小,以及不同设备的隐藏和显示
    thinkphp5 layout布局的理解和使用,模板继承等等
    thinkphp5的前台是如何实现的,以及后台栏目的作用
    JS工作流进度条显示,以及相关的思路和原理
    Lnmp服务器集群配置研究和实践
    关于require.js写的最通俗易懂的文章
    使用js把html导出word,单位换算,配置样式和分页,页边距,字体及大小,行距,缩进,@page等等
    使用phpword插件,导出word,并解决循环数据的问题
    php使用array_filter函数,并使用闭包,动态的过滤数组
    leetcode——437. 路径总和 III
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/jbpmioc.html
Copyright © 2020-2023  润新知