
2.4 初始化流程引擎配置类
在代码清单2-14中,buildProcessEngine方法会调用init()方法初始化ProcessEngine-ConfigurationImpl实例对象的各种属性,具体实现如代码清单2-20所示。
代码清单2-20 ProcessEngineConfigurationImpl.java

仅从代码量上就能看出ProcessEngineConfigurationImpl类的初始化相当复杂,涉及了各种各样的考虑。在细化讲解之前,首先要明白一点ProcessEngineConfigurationImpl是抽象类,上文讲解的两种配置风格中使用到的两个流程引擎配置类StandaloneProcessEngine-Configuration和SpringProcessEngineConfiguration均继承ProcessEngineConfigurationImpl类。
在实际项目开发中如果开发人员觉得ProcessEngineConfigurationImpl类中的初始化方法不能满足业务需求,例如initBeans方法不能满足要求,则可以自定义一个类继承StandaloneProcessEngineConfiguration或者SpringProcessEngineConfiguration,然后重写initBeans方法。由于init方法中涉及了大量属性的初始化工作,如果单一地对每个方法进行讲解恐怕很难理解其精髓,而且可能会有事倍功半的效果,因此本章节先讲解几个比较重要的初始化方法,其余后续章节会陆续讲解,进而达到事半功倍的效果。
以上绝大部分方法的初始化处理逻辑均为:首先判断客户端是否设置了指定的属性值,如果客户端设置了则优先使用,否则使用系统内置的值进行初始化工作,对于这些可以让客户端扩展的属性,将其称之为“开关属性”也许会更加容易理解一点。
约定
本书中如果没有特殊说明,则开关属性均指ProcessEngineConfigurationImpl类中可以让客户端扩展的属性。