流程引擎概念_虚幻引擎4

流程引擎概念_虚幻引擎4目录一、流程定义二、查询流程定义三、ID与版本四、挂起流程定义五、流程实例六、执行七、活动实例八、任务与任务定义本部分说明了流程引擎的概念一、流程定义流程定义定义了流程的结构。CamundaBPM使用BPMN2.0作为主要的建模语言,可以将BPMN2.0XML格式部署到流程引擎中。二、查询流程定义List<ProcessDefinition>processDefinitions=repositoryService.createP

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

一、流程定义

二、查询流程定义

三、ID与版本

四、挂起流程定义

五、流程实例

六、执行

七、活动实例

八、任务与任务定义


本部分说明了流程引擎的概念

一、流程定义

流程定义定义了流程的结构。

Camunda BPM使用BPMN2.0作为主要的建模语言,可以将BPMN 2.0XML格式部署到流程引擎中。

二、查询流程定义

List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
    .processDefinitionKey("invoice")
    .orderByProcessDefinitionVersion()
    .asc()
    .list();

也支持通过RestAPI进行查询。

三、ID与版本

流程定义ID是流程定义的逻辑标识符,最主要是用于启动流程实例。

<process id="invoice" name="invoice receipt" isExecutable="true">
  ...
</process>

如果相同的ID不是多个,则为流程定义的多个版本。

四、挂起流程定义

使用RuntimeService支持挂起、激活流程定义,当处于挂起阶段时无法实例化流程定义。

五、流程实例

  • 流程实例概念

流程实例是流程定义的单独执行。

流程引擎负责创建流程实例并管理状态。

  • 启动流程实例

支持传入变量

Map<String, Object> variables = new HashMap<String,Object>();
variables.put("creditor", "Nice Pizza Inc.");
ProcessInstance instance = runtimeService.startProcessInstanceByKey("invoice", variables);
  • 在任一活动中启动流程实例

创建流程实例使用startProcessInstanceByKeystartProcessInstanceById

ProcessInstance instance = runtimeService.createProcessInstanceByKey("invoice")
  .startBeforeActivity("SendInvoiceReceiptTask")
  .setVariable("creditor", "Nice Pizza Inc.")
  .startBeforeActivity("DeliverPizzaSubProcess")
  .setVariableLocal("destination", "12 High Street")
  .execute();
  • 返回变量

使用executeWithVariablesInReturn返回变量

ProcessInstanceWithVariables instance = runtimeService.createProcessInstanceByKey("invoice")
  .startBeforeActivity("SendInvoiceReceiptTask")
  .setVariable("creditor", "Nice Pizza Inc.")
  .startBeforeActivity("DeliverPizzaSubProcess")
  .setVariableLocal("destination", "12 High Street")
  .executeWithVariablesInReturn();
  • 查询流程实例
runtimeService.createProcessInstanceQuery()
    .processDefinitionKey("invoice")
    .variableValueEquals("creditor", "Nice Pizza Inc.")
    .list();
  • 流程实例操作

触发:继续执行。

取消:RuntimeService.deleteProcessInstance(…)。

开始\取消任何活动:修改流程实例。

  • 挂起流程实例

单个实例:RuntimeService的suspendProcessInstanceById(…)来挂起流程实例。

流程定义下所有实例:RepositoryService的suspendProcessDefinitionById(…)。

六、执行

流程引擎概念_虚幻引擎4

流程引擎在流程实例内部创建两个并发执行。

  • 查询执行
runtimeService.createExecutionQuery()
    .processInstanceId(someId)
    .list();

七、活动实例

活动实例表示活动的单个实例。

  • 检索活动实例
ActivityInstance rootActivityInstance = runtimeService.getActivityInstance(processInstance.getProcessInstanceId());
  • 标识唯一性

每个活动实例都一个唯一的标识ID,是持久性的,相同的活动实例返回相同的ID。

  • 与执行的关系

一个活动实例可能会有多个执行。

八、任务与任务定义

  • 概念

流程定义包含一个Job Executor的组件,负责执行异步后台任务。

部署流程后,流程引擎会为流程中的每个活动创建任务定义,这将在运行时创建任务。

  • 查询任务
managementService.createJobQuery()
  .duedateHigherThan(someDate)
  .list()
  • 查询任务定义
managementService.createJobDefinitionQuery()
  .processDefinitionKey("orderProcess")
  .list()
  • 挂起\激活任务执行

不同级别执行暂停:

任务实例级别;

任务定义级别。

List<JobDefinition> jobDefinitions = managementService.createJobDefinitionQuery()
        .processDefinitionKey("orderProcess")
        .activityIdIn("processPayment")
        .list();

for (JobDefinition jobDefinition : jobDefinitions) {
  managementService.suspendJobDefinitionById(jobDefinition.getId(), true);
}

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179859.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时限调度算法给出的调度顺序_时间片轮转法进行进程调度

    时限调度算法给出的调度顺序_时间片轮转法进行进程调度调度算法-时间轮一.背景在我们的业务场景中,经常会使用到定时任务功能,比如定时发送消息,定时执行数据同步,比如之前的文章介绍的分布式事务中的本地事务表方式的解决方案等等,特别是在现在大数据量和分布式服务环境下,定时任务调度越来越频繁,所以对应的定时任务调度的算法实现也越来越完善。在之前的单机环境下,我们可以使用ScheduledThreadPool起一个延迟任务线程池,定时的执行任务,又或者使用spring提供的@Schedule注解配合上cron表达式开启一个定时任务,又或者是lin

    2022年9月28日
    3
  • Log4j.properties配置文件详解「建议收藏」

    Log4j.properties配置文件详解「建议收藏」Log4J的配置文件(ConfigurationFile)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1.配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger=[level],appenderName,appenderName1,…#配置日志信息输出目的地Appender及Appender选项log4j.a

    2022年9月30日
    4
  • springboot企业级开发_springboot项目搭建

    springboot企业级开发_springboot项目搭建企业级 SpringBoot 教程 (六)springboot整合mybatis

    2022年4月21日
    52
  • jar find小技巧

    jar find小技巧

    2021年5月12日
    143
  • webgame开发中的文件加密

    webgame开发中的文件加密一般的webgame中都会对资源、消息进行加密,这里只是简单记录一下对文件的加密过程。上图为实际项目中所使用的加密工具(较为简单的一个air项目)输入加密key+需要加密的文件–>加密–>将加密后的文件保存至另一目录(后缀名视自己的项目的规则进行修改)实现步骤:1、读取文件(flash.filesystem.File),获取文件流(…

    2022年6月4日
    42
  • java实现ajax_Ajax&Java

    java实现ajax_Ajax&JavaAJAX即“AsynchronousJavascriptAndXML”(异步JavaScript和XML)是一种基于浏览器的XMLHttpRequest对象实现的创建交互式网页应用的网页开发技术。用JS创建XMLHttpRequest对象并调用其方法实现基本的Ajax请求:xmlhttp=newXMLHttpRequest();//创建XMLHttpRequest对象…

    2022年7月7日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号