Activity工作流引擎学习笔记(二)

Activity工作流引擎学习笔记(二)核心APIProcessEngine说明:1) 在Activiti中最核心的类,其他的类都是由他而来。2) 产生方式:在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。3) 可以产生R

大家好,又见面了,我是你们的朋友全栈君。

核心API

ProcessEngine

说明:

1) 在Activiti中最核心的类,其他的类都是由他而来。

2) 产生方式:

在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。

3) 可以产生RepositoryService

 

4) 可以产生RuntimeService

 

5) 可以产生TaskService

 

各个Service的作用:

RepositoryService

管理流程定义

RuntimeService

执行管理,包括启动、推进、删除流程实例等操作

TaskService

任务管理

HistoryService

历史管理(执行完的数据的管理)

IdentityService

组织机构管理

FormService

一个可选服务,任务表单管理

ManagerService

 

RepositoryService

Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。

1) 产生方式

 

2) 可以产生DeploymentBuilder,用来定义流程部署的相关参数

 

3) 删除流程定义

 

RuntimeService

activiti的流程执行服务类。可以从这个服务类中获取很多关于流程执行相关的信息。

TaskService

activiti的任务服务类。可以从这个类中获取任务的信息。

HistoryService

activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。

ProcessDefinition

流程定义类。可以从这里获得资源文件等。

ProcessInstance

代表流程定义的执行实例。如范冰冰请了一天的假,她就必须发出一个流程实例的申请。一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。流程实例就表示一个流程从开始到结束的最大的流程分支,即一个流程中流程实例只有一个。

Execution

Activiti用这个对象去描述流程执行的每一个节点。在没有并发的情况下,Execution就是同ProcessInstance流程按照流程定义的规则执行一次的过程,就可以表示执行对象Execution

如图为ProcessInstance的源代码:

Activity工作流引擎学习笔记(二)

从源代码中可以看出ProcessInstance就是Execution。但在现实意义上有所区别:

Activity工作流引擎学习笔记(二)

在单线流程中,如上图的贷款流程,ProcessInstance与Execution是一致的

Activity工作流引擎学习笔记(二)

这个例子有一个特点:wire money(汇钱)和archive(存档)是并发执行的。这个时候,总线路代表ProcessInstance,而分线路中每个活动代表Execution。

总结:

* 一个流程中,执行对象可以存在多个,但是流程实例只能有一个。

* 当流程按照规则只执行一次的时候,那么流程实例就是执行对象。

 

HelloWorld程序(模拟流程的执行)

流程图:

//待续。。。

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

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

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


相关推荐

  • java实现线程通信的几种方式[通俗易懂]

    java实现线程通信的几种方式[通俗易懂]前言在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考1、synchronized实现方式可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是

    2022年6月19日
    38
  • 我的程序里

    我的程序里我的程序里没有一点点防备也没有一丝顾虑突然错误出现在我的日志里带给我惊喜身不自已可是你偏又这样在我不知不觉中悄悄的消失从我的堆栈里没有音讯剩下了报警短信你存在我某一个模块里我的梦里,我的心里,我的

    2022年7月3日
    20
  • @param注解的用法解析_getmapping注解用法

    @param注解的用法解析_getmapping注解用法1、概述首先明确这个注解是为SQL语句中参数赋值而服务的。@Param的作用就是给参数命名,比如在mapper里面某方法A(intid),当添加注解后A(@Param(“userId”)intid),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。将参数值传如SQL语句中,通过#{userId}进行取值给SQL的参数赋值。2、实例:实例一:@Param注解基本类型的参数mapper中的方法:publicUse…

    2022年10月21日
    0
  • CentOS7怎么保存退出vi编辑

    CentOS7怎么保存退出vi编辑CentOS7怎么保存退出vi编辑(转自阿里云)保存命令按ESC键跳到命令模式,然后::w保存文件但不退出vi:wfile将修改另外保存到file中,不退出vi:w!强制保存,不推出vi:wq保存文件并退出vi:wq!强制保存文件,并退出viq:不保存文件,退出vi:q!不保存文件,强制退出vi:e!放弃所有修改,从上次保存文件开始再编辑…

    2022年9月30日
    0
  • linux时间戳转换日期格式_java时间戳转换成年月日时分秒

    linux时间戳转换日期格式_java时间戳转换成年月日时分秒unix时间戳 date +%s linux: 将时间戳1123495443 换算成可以识别的年月日分秒 date -d ‘1970-01-01 UTC 1123495443 seconds’ FreeBSD: date -j -f “%Y%m%d ” `date +%Y%m%d` “+ %s” #date指令 源日期格式  要转换出的格式管理员在

    2022年10月3日
    0
  • 前嗅ForeSpider教程:抽取数据

    前嗅ForeSpider教程:抽取数据

    2021年7月1日
    92

发表回复

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

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