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


相关推荐

  • 企业联合体的形式_企业联合体「建议收藏」

    企业联合体的形式_企业联合体「建议收藏」企业联合体企业联合体企业联合体定义企业联合体定义::属于经济联合体的一种联合体表现形式(最大经济联合体是欧盟),完全区别于联合公司和战略合作伙伴的联合体,具体是集团公司或者是交叉参股的公司组建的一个企业(联合体)。该联合体应大于两家组建企业。企业联合体职能企业联合体职能::企业联合体可具有独立的法人代表、独立的品牌体系、独立的运作系统,企业联合体也可以是整合资源、共建平台的非独立企业联合体;共同建…

    2025年6月2日
    3
  • Transfer: Javascript实现网页水印(非图片水印)

    Transfer: Javascript实现网页水印(非图片水印)

    2021年8月5日
    53
  • 微信H5分享到朋友圈,转发朋友功能随记[通俗易懂]

    微信H5分享到朋友圈,转发朋友功能随记[通俗易懂]最近刚做了一个微信公众号H5项目,里面包含一个分享到朋友圈和分享给好友的功能。配置白名单以及公众号js安全域名这些就不赘述了,接下来简单介绍下实现这个功能的几个前端步骤因为是微信网页开发,项目里如果有用到一些分享,音频,视频的功能就必须接入它的SDK工具包,详情可以到官方文档里看一下第一步绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看对应的接口权限。第二步引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持ht

    2022年6月1日
    57
  • SpringBoot——ResponseBody

    SpringBoot——ResponseBody很多情况下我们希望后端的调用结果能直接写入Http的响应体中以供前端获取来更新页面显示,此时需要我们在以@controller为注解的类中对相应方法加上@ResponseBody注解:@ControllerclassHelloWorldController{@RequestMapping(“/hello”)@ResponseBodypublicStringhello(){return”HelloWorld!”;}}我们也可

    2022年5月28日
    34
  • js存入缓存_redis不设置过期时间

    js存入缓存_redis不设置过期时间javascript本地缓存方案– 存储对象和设置过期时间

    2022年4月20日
    83
  • ffmpeg h264解码器提取

    ffmpeg h264解码器提取ffmpeg包含了很多的音视频解码器,本文试图通过对ffmpeg的简单分析提取h264解码器.使用ffmpeg解码可以参考ffmpeg源码下的doc/examples/decoding_encoding.c 1.首先设置解码器参数(avcodec_find_decoder(CODEC_ID_H264)将decode函数指针为h264_decoder,即

    2022年6月16日
    36

发表回复

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

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