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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • centos关闭自动休眠_7P怎么强制重启

    centos关闭自动休眠_7P怎么强制重启taskkill/F/imnginx.exetaskkill/F/imnginx.exed:cdD:\phpstudy_pro\Extensions\Nginx1.15.11startnginx.exe然后做个计划任务。一个小时重启一次

    2022年8月13日
  • windows安装虚拟机(VMware)

    windows安装虚拟机(VMware)引言:最近想要安装一个linux,根据实际我决定安装在虚拟机上,于是先动手安装一个虚拟机。参考:centos详细版本介绍参考:“网络选择安装部分”通俗讲解资源:阿里云开源镜像站环境:本机环境:windows764bit内存:8GB1600MHZCPU:Corei54210M双核双线程VMware镜像:VMware-workstation…

    2022年9月12日
  • 实体list转JSONArray对Date数据处理「建议收藏」

    实体list转JSONArray对Date数据处理「建议收藏」直接上代码importnet.sf.json.JSONArray;importnet.sf.json.JsonConfig;importnet.sf.json.processors.JsonValueProcessor;importjava.math.BigDecimal;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;

    2022年6月24日
  • system WinExec ShellExecuteEx

    system WinExec ShellExecuteExwindows编程的时候经常需要调用操作系统提供的命令,比如调用netuser命令可以在系统中新建一个用户等。    1.最简单的调用方法就是使用函数system(),例如    system(“copyd:\\1.rard:\\2.rar”);    属于CRuntimeLibrary,调用该函数会阻塞调用线程。    优点:简单方便,既

    2022年7月11日
  • rand()函数的用法[通俗易懂]

    rand()函数的用法[通俗易懂]C++中rand()函数的用法1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。2、如果你要产生0~99这100个整数中的一个随机整数,

    2022年8月2日

发表回复

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

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