flowable DmnEngine和DmnEngineConfiguration

Posted teamlet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flowable DmnEngine和DmnEngineConfiguration相关的知识,希望对你有一定的参考价值。

一、DmnEngineConfiguration创建实例

DmnEngineConfiguration 提供了7个公共的静态方法,用于创建自身实例。

其中5个是使用spring的机制加载配置文件。
另外2个是Standalone形式的,代码如下:

    public static DmnEngineConfiguration createStandaloneDmnEngineConfiguration() 
        return new StandaloneDmnEngineConfiguration();
    

    public static DmnEngineConfiguration createStandaloneInMemDmnEngineConfiguration() 
        return new StandaloneInMemDmnEngineConfiguration();
    

根据前面的分析,StandaloneDmnEngineConfiguration没有添加任何的代码,完全等同与父类;

而StandaloneInMemDmnEngineConfiguration只是修改了父类的jdbc url的参数,设置为h2数据库的配置。

二、DmnEngine构建

DmnEngineConfiguration实例创建后,调用buildDmnEngine(),获得DmnEngine的实例。

    public DmnEngine buildDmnEngine() 
        init();
        return new DmnEngineImpl(this);
    

三、服务初始化

在init()方法里面做了很多初始化的工作。这里只说和DmnEngine相关的。

protected void init() 
...
initServices();
...


 protected void initServices() 
        initService(dmnManagementService);
        initService(dmnRepositoryService);
        initService(ruleService);
        initService(dmnHistoryService);
    

    protected void initService(Object service) 
        if (service instanceof ServiceImpl) 
            ((ServiceImpl) service).setCommandExecutor(commandExecutor);
        
    

上面代码将DmnEngineConfiguration的 commandExecutor属性赋值给这四个服务。实际上,commandExecutor是DmnEngineConfiguration父类 AbstractEngineConfiguration的属性。

这四个服务的代码如下:

protected DmnManagementService dmnManagementService = new DmnManagementServiceImpl();
    protected DmnRepositoryService dmnRepositoryService = new DmnRepositoryServiceImpl();
    protected DmnRuleService ruleService = new DmnRuleServiceImpl();
    protected DmnHistoryService dmnHistoryService = new DmnHistoryServiceImpl();

这四个服务有相同的父类: ServiceImpl

ServiceImpl包含一个CommandExecutor属性。这四个服务的方法都是通过CommandExecutor实现代理模式来完成的。

以上是关于flowable DmnEngine和DmnEngineConfiguration的主要内容,如果未能解决你的问题,请参考以下文章

Flowable基本使用介绍和Flowable数据库表解释

Flowable开源版和Flowable商业版有什么区别?

工作流Flowable和Camunda的学习之路

工作流Flowable和Camunda的学习之路

Flowable 实战

Flowable入门系列文章80 - Flowable Designer部署功能