flowable ContentEngine和ContentEngineConfiguration的关系

Posted teamlet

tags:

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

一、CommandExecutor

ContentEngineConfiguration继承自 AbstractEngineConfiguration。

在 AbstractEngineConfiguration 中包含一个CommandExecutor 属性。

protected CommandExecutor commandExecutor;

二、ContentManagementService和ContentService

ContentEngineConfiguration中包含两个属性:

    protected ContentManagementService contentManagementService = new ContentManagementServiceImpl();

    protected ContentService contentService = new ContentServiceImpl();

三、创建ContentEngine

ContentEngine是通过调用ContentEngineConfiguration实例的buildContentEngine()完成创建的。

 public ContentEngine buildContentEngine() 
        init();
        return new ContentEngineImpl(this);
    

1、传递CommandExecutor

在调用ContentEngineConfiguration的buildContentEngine()方法时,在 AbstractEngineConfiguration 中包含的CommandExecutor 属性被赋值给ServiceImpl。代码如下:

 protected void initServices() 
        initService(contentManagementService);
        initService(contentService);
    

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

ServiceImpl是ContentService和ContentManagementService的父类,包含一个CommandExecutor 属性。(见下图)

至此,ContentEngineConfiguration 初始化了ContentService和ContentManagementService,并把父类中的CommandExecutor传递给了这两个类的实例。

2、构建ContentEngine

ContentEngineConfiguration被当作参数传递给ContentEngineImpl的构造方法。

 public ContentEngine buildContentEngine() 
        init();
        return new ContentEngineImpl(this);
    

ContentEngineImpl通过ContentEngineConfiguration得到ConentService和ContentManagementService,并对外提供。

public ContentEngineImpl(ContentEngineConfiguration engineConfiguration) 
        this.engineConfiguration = engineConfiguration;
        this.name = engineConfiguration.getEngineName();
        this.managementService = engineConfiguration.getContentManagementService();
        this.contentService = engineConfiguration.getContentService();
        ...
 

ContentEngine 提供的服务最终的执行者是ContentService和ContentManagementService的父类 ServiceImpl;

而 ServiceImpl的执行器是由 AbstractEngineConfiguration提供的。

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

在 FileNet ContentEngine 中搜索文件夹并检索其类

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

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

工作流Flowable和Camunda的学习之路

工作流Flowable和Camunda的学习之路

Flowable 实战