Activiti6教程三
这一节主要介绍Activiti中API中的一些名词
官方文档简介中主要包含以下几个API
这几个接口的用处已经介绍的很清楚了,但是使用这些API我们必须要了解到activiti的一些定义,我们结合流程图来说,我们定义一个业务流程
我们查看API时会发现很多接口都需要传入processInstanceId
比如RumtimeService下
addParticipantUser(String processInstanceId, String userId) 接口,这个接口代表将这个任务指派给潜在用户(通俗一点就是这个用户有完成这个任务的权限),processInstanceId代表着一个流程的id一个流程只有唯一的一个ID举个例子我发起一个请假流程,那么这个流程就有一个唯一对应的processInstanceId,那么我就可以根据这个id获取到这个流程的ProcessInstance ,ProcessInstance这个对象里面包含着我开启这个流程的具体信息比如什么时候开启的,谁开启的,流程的名字是什么,所有的任务Task都是和ProcessInstance做挂钩的,(可以这样理解,有了流程实例才有流程任务,如果流程都没开启何来任务?)
TaskId
代表着任务节点的ID,以上图来说,当任务进行到T1,T2,T3时我们怎么跟踪里面的信息?答案是我们需要一个id,这个ID就是taskId,它是任务的唯一标识,在TaskService中大量使用到了TaskId
executionId
这个executionId主要用来跟踪流程的状态,如果你进行debug调试的时候就会发现activiti的模型是以很多execution来表示的,比如上图中的连线,开始和结束节点,任务节点都可以用execution来表示,execution代表了流程图中每一个元素,而其的标识就用executionId来标识,这样我们就可以清楚的知道流程进行到哪里(哪个execution)
ProcessInstance
activiti中流程实例对象,代表着一个流程实例
Task
任务流程对象,对应以上示例图中的T1,T2,T3标签,在BPMN图中往往用User Task这个图标来表示,在实际业务中往往代表着一个要处理的任务,比如审批通过等
Query
如果你查看上述截图中的核心api,会发现大多API中 都存在一个create...Query的方法,如RuntimeService中的createProcessInstanceQuery()方法,他产生了一个ExecutionQuery对象,这个对象是封装了对应的查询api,采用了流式编程,如
runtimeService.createProcessInstanceQuery().startedBefore(new Date(new Date().getTime()-24*60*60*1000)).startedAfter(new Date()).list();
这个是获取正在进行的流程,且流程开始时间是昨天到今天的流程列表,这个行代码返回的是ProcessInstance对象,这个我们可以通过createProcessInstanceQuery方法看出来,同理createExecutionQuery最后返回的就是Execution对象,所有查询接口最后必须已list()方法或者singleResult()结尾,它代表的这次查询是返回的是列表,还是单个对象,正如前面所说由于采用流式编程的方式每次执行方法如上述的startBefore()方法后都会返回一个Query对象,只有执行singleResult()或者list()方法后才可将其转换回所查询的对象,我们可以通过idea点击进入list()方法看到里面的代码就很清楚它的运作方式了
TaskListener
顾名思义,任务监听器,作用在task节点,实际中可能作用在User Task标签中多一些,此接口为任务监听器,执行实现这个接口后,可以把这个接口挂载到任务下完成,对任务的监听,比如任务开始,或者完成后要执行什么,我们点击编辑器中的T1节点然后就会在下面发现一个
选项,点进去输入你编写监听器类的全路径即可
Activiti6教程三相关推荐
- Quartz教程三:Job与JobDetail介绍
Quartz教程三:Job与JobDetail介绍 原文链接 | 译文链接 | 翻译:nkcoder | 校对: 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感 ...
- jQuery 3教程(三):jQuery集合
原文地址:jQuery 3教程(三):jQuery集合 Introduction jQuery选择器选择出来的结果很多时候是一个DOM元素集而非单个元素,jQuery可以灵活的访问和修改DOM元素集, ...
- Swift中文教程(三)--流程控制
Swift中文教程(三)--流程控制 原文:Swift中文教程(三)--流程控制 Swift用if和switch编写条件控制语句,用for-in,for,while和do-while编写循环.条件控制 ...
- qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
PySide--Python图形化界面入门教程(三) --使用内建新号和槽 --Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...
- Java 结构体之 JavaStruct 使用教程三 JavaStruct 数组进阶
经过前面两篇博客的介绍,相信对于 JavaStruct 的认识以及编程使用,读者已经有一定的基础了.只要理解和实践结合起来,掌握还是很容易的.下面进行一些数组使用方面的实例说明及演示. 在结构体类中使 ...
- MIP开发教程(三) 使用MIP-CLI工具调试组件
一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发 ...
- SpringCloud 入门教程(三): 配置自动刷新
Spring Cloud 入门教程(三): 配置自动刷新 之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Se ...
- MongoDB 教程三: 高级查询 (SQL到MongoDB映射表)
查询接口 对于查询操作,MongoDB 提供了 db.collection.find() 方法.这个方法接收查询条件和映射两个条件并且返回一个指向匹配文档的 游标 .你可以使用 limits, ski ...
- MongoDB 教程三: 高级查询
视频:MongoDB 教程三: 高级查询 MongoDB支持的查询语言非常强大,语法规则类似于面向对象的查询语言,可以实现类似关系数据库单表查询的绝大部分功能,并且由于 MongoDB可以支持复杂的数 ...
最新文章
- 安装kashigari报错提示Consider using the `--user` option or check the permissions.
- SQL Server 2008 R2中文版快速安装
- 克隆树莓Raspberry Pi Mode4 的TF卡
- android popupwindow dialog区别,Android PopUpWindow使用详解
- 2021-03-29 标准化函数
- 计算机工具软件应用考试,《计算机常用工具软件》期中考试题
- python网易云_用python爬虫爬取网易云音乐
- Apache下PHP Loaded Configuration File None 解决方法
- WPF中的动画——(四)缓动函数
- 打造高效前端工作环境 - tmux
- NYOJ243 - 交换输出
- css与javascript小案例,使用css3和javascript开发web拾色器实例代码
- 通过GDI+修改jpg文件EXIF属性
- FPGA信号处理系列文章——定点数据截位处理
- opencv如何把一个矩阵不同列分离开_【opencv基础】OpenCV从Mat中提取某些行或列
- 纷享销客《快消行业CRM应用与选型指南》重磅发布
- iOS 直播类,交友类,陪玩类 app 上架攻略
- 用起这 16 个顶尖 Vue 开源项目,节约更多的时间摸鱼
- 第十一章:MATLAB:符号运算(符号与数值,符号矩阵)
- 【论文阅读】用于自动中文作文评分的多阶段预训练