流程引擎 API

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

	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
	RepositoryService repositoryService = processEngine.getRepositoryService();
	RuntimeService runtimeService = processEngine.getRuntimeService();
	TaskService taskService = processEngine.getTaskService();
	IdentityService identityService = processEngine.getIdentityService();
	FormService formService = processEngine.getFormService();
	HistoryService historyService = processEngine.getHistoryService();
	ManagementService managementService = processEngine.getManagementService();
	FilterService filterService = processEngine.getFilterService();
	ExternalTaskService externalTaskService = processEngine.getExternalTaskService();
	CaseService caseService = processEngine.getCaseService();
	DecisionService decisionService = processEngine.getDecisionService();

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

ProcessEngines类将扫描所有camunda.cfg.xml和activiti.cfg.xml文件。对于所有camunda.cfg.xml文件,流程引擎将以典型的方式建立。

ProcessEngineConfiguration
	.createProcessEngineConfigurationFromInputStream(inputStream)
	.buildProcessEngine() 

对于所有的activiti.cfg.xml文件,流程引擎将以Spring的方式构建:首先创建Spring应用上下文,然后从该应用上下文中获得流程引擎。所有的服务都是无状态的。这意味着你可以很容易地在一个集群的多个节点上运行Camunda平台,每个节点都去同一个数据库,而不必担心哪个机器实际执行了以前的调用。对任何服务的任何调用都是无状态的,无论它在哪里执行。

1. 仓库服务(RepositoryService)
仓库服务(RepositoryService)可能是第一个需要的服务。这个服务提供了管理和操纵部署和流程定义的操作。流程定义是BPMN 2.0流程的Java对应物,这里就不多说了。它是一个流程的每个步骤的结构和行为的表示。部署是引擎中的包装单元。一个部署可以包含多个BPMN 2.0 XML文件和任何其他资源。一个部署中包含的内容的选择由开发者决定。它的范围可以从一个单一的流程BPMN 2.0 XML文件到整个流程和相关资源包(例如,部署 “hr-processes “可以包含与hr流程相关的一切内容)。RepositoryService允许部署这种包。进行一次部署意味着部署内容被上传到引擎,在那里所有的流程都被检查和解析,然后被存储在数据库中。从那时起,系统就知道该部署了,并且任何包含在部署中的流程现在都可以被启动。
此外,这项仓库服务(RepositoryService)允许:
■ 查询引擎已知的部署和流程定义。
■ 失效和激活流程定义。失效意味着不能对它们做进一步的操作,而激活则是相反的操作。
■ 检索各种资源,如部署中包含的文件或由引擎自动生成的流程图。

2. RuntimeService
RepositoryService是关于静态信息的(即,不改变的数据,或者至少不会改变很多的),而RuntimeService则完全相反。它处理的是启动流程定义的新流程实例。如上所述,一个流程定义定义了流程中不同步骤的结构和行为。一个流程实例是这样流程定义的一次执行。对于每个流程定义,通常有许多实例在同时运行。RuntimeService也是用于检索和存储流程变量的服务。这是某个特定流程实例的数据,可以被流程中的各种构造使用(例如,排他网关经常使用流程变量来确定选择哪条路径继续流程)。RuntimeService还允许对流程实例和执行进行查询。执行(Executions)是BPMN 2.0中’token’的概念。一般来说,执行是一个指针,指向流程实例当前所在的位置。最后,当流程实例在等待外部触发并且流程需要继续时,RuntimeService就会被使用。流程实例可以有各种等待状态,这个服务包含各种操作,以 “通知” 实例已经收到外部触发,流程实例可以继续执行。

3. TaskService
需要由系统的实际人类用户执行的任务是流程引擎的核心。围绕任务的一切都被归入TaskService,例如:
○ 查询分配给用户或组的任务。
○ 创建新的独立任务。这些是与流程实例无关的任务。
○ 操纵一个任务被分配给哪个用户,或者哪个用户以某种方式参与到任务中。
○ 声称并完成一项任务。声称意味着有人决定成为该任务的受让人,意味着这个用户将完成该任务。完成意味着 “完成任务的工作”。一般来说,这就是填写一个类似的表格。
4. IdentityService
身份服务(IdentityService)是非常简单的。它允许对组和用户进行管理(创建、更新、删除、查询…)。重要的是要理解,核心引擎实际上在运行时并不对用户进行任何检查。例如,一个任务可以被分配给任何用户,但引擎并不验证该用户是否为系统所知。这是因为该引擎也可以与LDAP、活动目录等服务结合使用。

5. FormService
表单服务(FormService)是一个可选的服务。这意味着没有它,Camunda引擎也可以完美地使用,不会缺少任何功能。这项服务引入了起始表单和任务表单的概念。开始表单是在流程实例启动前显示给用户的表单,而任务表单是当用户想完成一项任务时显示的表单。你可以在BPMN 2.0流程定义中定义这些表单。这个服务以一种简单的方式暴露了这些数据,以便于工作。但同样,这是可选的,因为表单不需要嵌入流程定义中。

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

7. ManagementService
管理服务(ManagementService)在编码自定义应用程序时通常不需要。它允许检索关于数据库表和表元数据的信息。此外,它暴露了查询功能和Job的管理操作。Job在引擎中被用于各种事情,如定时器、异步延续、延迟暂停/激活等。稍后,这些主题将被更详细地讨论。

8. FilterService
过滤器服务(FilterService)允许创建和管理过滤器。过滤器是像任务查询一样的存储查询。例如,过滤器被任务列表用来过滤用户任务。

9. ExternalTaskService
外部任务服务(ExternalTaskService)提供对外部任务实例的访问。外部任务代表在外部处理的工作项目,独立于流程引擎。

10. CaseService
案例服务(CaseService)与运行时服务(RuntimeService)类似,但用于案例实例。它处理启动案例定义的新案例实例并管理案例执行的生命周期。该服务也被用来检索和更新案例实例的流程变量。

11. DecisionService
决策服务 (DecisionService) 允许评估部署在引擎中的决策。它是评估独立于流程定义的业务规则任务中的决策的一种选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值