( 二 )、Activiti 表结构介绍、核心接口介绍

( 二 )、Activiti 表结构介绍、核心接口介绍

 

 

1、表结构介绍

官网地址:https://www.activiti.org/userguide/#creatingDatabaseTable

1.1、表前缀说明

  • act_ge_ 通用数据表,ge是general的缩写
  • act_hi_ 历史数据表,hi是history的缩写,对应 HistoryService 接口
  • act_id_ 身份数据表,id是identity的缩写,对应 IdentityService 接口
  • act_re_ 流程存储表,re是repository的缩写,对应 RepositoryService 接口,存储流程部署和流程定义等静态数据
  • act_ru_ 运行时数据表,ru是runtime的缩写,对应 RuntimeService 接口和 TaskService 接口,存储流程实例和用户任务等动态数据

1.2、Activiti 数据表清单:

表分类 表名 备注说明
一般数据 ACT_GE_BYTEARRAY 流程定义的bpmn和png文件
ACT_GE_PROPERTY 系统相关属性
流程历史记录 ACT_HI_ACTINST 历史的流程实例
ACT_HI_ATTACHMENT 历史的流程附件
ACT_HI_COMMENT 历史的说明性信息
ACT_HI_DETAIL 历史的流程运行中的细节信息
ACT_HI_IDENTITYLINK 历史的流程运行过程中用户关系
ACT_HI_PROCINST 历史的流程实例
ACT_HI_TASKINST 历史的任务实例
ACT_HI_VARINST 历史的流程实例变量表
用户用户组表 ACT_ID_GROUP 身份信息-组信息
ACT_ID_INFO 身份信息-组信息
ACT_ID_MEMBERSHIP 身份信息-用户和组关系的中间表
ACT_ID_USER 身份信息-用户信息
流程定义表 ACT_RE_DEPLOYMENT 流程定义部署表
ACT_RE_MODEL 模型信息
ACT_RE_PROCDEF 流程定义信息
运行实例表 ACT_RU_EVENT_SUBSCR 运行时事件
ACT_RU_EXECUTION 运行时流程执行实例
ACT_RU_IDENTITYLINK 运行时参与者的用户信息
ACT_RU_JOB 运行时作业
ACT_RU_TASK 运行时任务
ACT_RU_VARIABLE 流程运行时变量表,记录当前流程可使用的变量,包括 global 和 local

 

2、核心API介绍
官网介绍:https://www.activiti.org/userguide/#chapterApi

 引擎 API 是与 Activiti 交互的最常见方式。中心起点是ProcessEngine,可以按照 配置部分中所述的多种方式创建。您可以从 ProcessEngine 获取包含工作流/BPM 方法的各种服务。ProcessEngine 和服务对象是线程安全的。因此,您可以为整个服务器保留对其中 1 个的引用。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();

  ProcessEngines.getDefaultProcessEngine()将在第一次调用时初始化并构建流程引擎,然后总是返回相同的流程引擎。可以使用ProcessEngines.init() 和正确创建和关闭所有流程引擎ProcessEngines.destroy()

activiti.cfg.xmlProcessEngines类将扫描所有activiti-context.xml文件。对于所有activiti.cfg.xml文件,流程引擎将以典型的 Activiti 方式构建:ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream).buildProcessEngine(). 对于所有activiti-context.xml文件,流程引擎将以 Spring 方式构建:首先创建 Spring 应用程序上下文,然后从该应用程序上下文中获取流程引擎。

所有服务都是无状态的。这意味着您可以轻松地在集群中的多个节点上运行 Activiti,每个节点都访问同一个数据库,而不必担心哪台机器实际执行了先前的调用。无论在何处执行,对任何服务的任何调用都是幂等的。

2.1、RepositoryService: 

可能是使用 Activiti 引擎时需要的第一个服务。该服务提供用于管理和操作的操作deployments以及process definitions. 在此不赘述,流程定义是 BPMN 2.0 流程的 Java 对应物。它是过程中每个步骤的结构和行为的表示。deployment是 Activiti 引擎中的封装单位。一个部署可以包含多个 BPMN 2.0 xml 文件和任何其他资源。一个部署中包含的内容的选择取决于开发人员。它的范围可以从单个流程 BPMN 2.0 xml 文件到整个流程包和相关资源(例如部署hr-processes可以包含与 hr 流程相关的所有内容)。RepositoryService允许这样的deploy包。部署部署意味着它被上传到引擎,在存储到数据库之前,所有流程都经过检查和解析。从那时起,系统就知道部署了,现在可以启动部署中包含的任何进程。

此外,该服务还允许

  • 查询引擎已知的部署和流程定义。

  • 暂停和激活作为一个整体或特定流程定义的部署。挂起意味着不能对它们进行进一步的操作,而激活是相反的操作。

  • 检索各种资源,例如引擎自动生成的部署或流程图中包含的文件。

  • 检索流程定义的 POJO 版本,该版本可用于使用 Java 而不是 xml 内省流程。

// 部署流程
repositoryService.createDeployment();
// 删除流程
repositoryService.deleteDeployment(deploymentId);
// 删除模型
repositoryService.deleteModel(modelId);

 

2.2、RuntimeService 

恰恰相反。它处理启动流程定义的新流程实例。如上所述,aprocess definition定义了流程中不同步骤的结构和行为。流程实例是此类流程定义的一次执行。对于每个流程定义,通常有许多实例同时运行。RuntimeService同样是用于检索和存储的服务process variables。这是特定于给定流程实例的数据,并且可以被流程中的各种结构使用(例如,独占网关经常使用流程变量来确定选择哪个路径来继续流程)。这Runtimeservice还允许查询流程实例和执行。执行是'token'BPMN 2.0 概念的一种表示。基本上,执行是指向流程实例当前所在位置的指针。最后,RuntimeService当流程实例等待外部触发器并且流程需要继续时使用。流程实例可以有多种wait states,并且该服务包含各种操作以向实例发出信号,表明接收到外部触发器并且流程实例可以继续。

runtimeService.startProcessInstanceByKey(key)
 // 或者
runtimeService.startProcessInstanceById(processDefinitionId);

 

2.3、TaskService

需要由系统的实际人类用户执行的任务是 BPM 引擎(如 Activiti)的核心。围绕任务的所有内容都分组在,例如

  • 查询分配给用户或组的任务

  • 创建新的独立任务。这些是与流程实例无关的任务。

  • 操纵任务被分配给哪个用户或哪些用户以某种方式参与该任务。

  • 要求并完成一项任务。声明意味着某人决定成为该任务的受让人,这意味着该用户将完成该任务。完成意味着完成任务的工作。通常这是填写某种形式。

// 查询任务
taskService.createTaskQuery().list();
// 查询张三的任务
taskService.createTaskQuery().taskCandidateOrAssigned("张三").list();
完成任务
taskService.complete(String taskId);

 

2.4、IdentityService

非常简单。它允许管理(创建、更新、删除、查询……)组和用户。重要的是要了解 Activiti 实际上不会在运行时对用户进行任何检查。例如,可以将任务分配给任何用户,但引擎不会验证系统是否知道该用户。这是因为 Activiti 引擎还可以与 LDAP、Active Directory 等服务结合使用。

2.5、FormService

一项可选服务。这意味着 Activiti 可以在没有它的情况下完美使用,而不会牺牲任何功能。该服务引入了启动表单任务表单的概念。开始表单是在流程实例启动之前向用户显示的表单,而任务表单是在用户想要完成表单时显示的表单。Activiti 允许在 BPMN 2.0 流程定义中定义这些表单。该服务以一种易于使用的方式公开这些数据。但同样,这是可选的,因为表单不需要嵌入到流程定义中。

2.6、HistoryService

暴露了 Activiti 引擎收集的所有历史数据。执行流程时,引擎可以保留很多数据(这是可配置的),例如流程实例的启动时间、谁执行了哪些任务、完成任务需要多长时间、每个流程实例中遵循的路径等. 该服务主要暴露查询能力来访问这些数据。

使用Activiti 编写自定义应用程序时,通常不需要ManagementService 。它允许检索有关数据库表和表元数据的信息。此外,它还公开了作业的查询功能和管理操作。作业在 Activiti 中用于各种事情,例如计时器、异步延续、延迟暂停/激活等。稍后,将更详细地讨论这些主题。

2.7、DynamicBpmnService

可用于更改流程定义的一部分,而无需重新部署它。例如,您可以更改流程定义中用户任务的受理人定义,或更改服务任务的类名。

有关服务操作和引擎 API 的更多详细信息,请参阅javadocs

 

posted @ 2022-03-27 11:50  邓维-java  阅读(969)  评论(0编辑  收藏  举报