Activiti API应该与自定义表连接,不应该在我们自己的数据库中创建activiti表

时间:2018-03-14 09:46:09

标签: java activiti

在我的项目中,我使用Activiti API进行流程工作流。如果我通过调用ProcessEngines.getDefaultProcessEngine()启动activiti工作流程,activiti将在我们的数据库中创建几个表,如ACT_GE_PROPERTY,ACT_HI_ACTINST等。 但我们的要求是我们根本不会使用自己的数据库表来使用activiti表。 如何避免在我们的数据库中创建activiti表?可能吗? 我已经读过,我们必须为ProcessEngineConfiguration编写自己的实现。

是否有人可以提供覆盖ProcessEngineConfiguration实现的步骤?

提前致谢。

3 个答案:

答案 0 :(得分:0)

恕我直言,没有。

Activiti不仅仅是API,还包括这些API的实现。

大多数工作流程会运行多次,并且可能涉及一些可能需要时间才能完成的人工任务。因此,Activiti必须坚持一些事情,包括流程的定义,运行流程实例的状态等等。

如果你只是不想要Activiti牌桌,那就是污染"污染"您自己的数据库模式,您可以使Activiti使用另一个模式,甚至是另一个数据库。

如果你坚持Activiti API使用你自己的表,也许你不仅要实现ProcessEngineConfiguration,还要实现org.activiti.engine.impl.db包下的类和SQL。

答案 1 :(得分:0)

Activiti 5 ans 6利用iBatis ORM从实体接口中抽象出持久层。 您至少需要重新实现所有持久性实体。 只要您维护现有架构并且只想重命名表本身,您就可以轻松更新iBatis SQL文件。

正如TKJohn指出的那样,从应用程序模式中分离Activiti表非常容易,实际上这被认为是最佳实践。但是,听起来你想要比这更进一步,因此需要重新实现持久性。

有关此类重新实施的示例,请查看Camunda和Flowable项目。两者都重新实现了持久性,同时保留了基本相同的模式。

答案 2 :(得分:0)

Activiti需要这些表,但您可以运行一次这些SQL脚本并以这种方式设置SpringProcessEngineConfiguration。所以它不会创建,但只在需要时才更新表。没有解决方法。它需要那些表格。

configuration.setDatabaseSchemaUpdate(SpringProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);

希望它有所帮助。