大类分1活塞式发动机 2喷气发动机 喷气发动机又分为:火箭发动机和空气喷气发动机火箭发动机包括 固体火箭发动机、液体火箭发动机和原子火箭发动机空气喷气发动机分为 有压气机式和无压气机式无压气机式包括冲压式和脉冲式有压气机式的分为涡喷、涡扇、涡轴、涡桨、桨扇五类,五类发动机中根据压气机结构不同又可分为轴流式压气机和离心式压气机。对于涡喷和涡扇还分带加力和不带加力。这个层次希望你能明白,这是目前比较科学的分类方式,如果还需要工作原理的话继续问我好了
Activiti工作流总共包含23张数据表,所有的表名默认以“ ACT_ ”开头。并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配
用来保存部署文件的大文本数据。
保存流程定义和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也一起部署到该表中,会造成一些错误(可能导致流程定义无法删除)。
属性数据表。存储这个流程引擎级别的数据。
历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容。
附件信息
历史审批意见表
历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。
任务参与者数据表。主要存储历史节点参与者的信息。
历史流程实例信息
历史任务流程实例信息
历史变量信息
用户组表,用来存储用户组信息。
用户扩展信息表。
用来保存用户的分组信息
用户信息表
部署信息表, 用来存储部署时需要持久化保存下来的信息
流程设计模型表,创建流程的设计模型时,保存在该数据表中。
流程解析表,解析成功了,在该表保存一条记录。业务流程定义数据表
运行时事件
运行时流程执行实例,我的代办任务查询表
身份联系,主要存储当前节点参与者的信息,任务参与者数据表。
运行时定时任务数据表
运行时任务数据表
运行时流程变量数据表
createTaskQuery()、首先是根据流程ID获取当前任务: ProcessDefinitionEntity def = (P,然后根据流程定义获得所有的节点list(); 2processInstanceId(procInstanceId)1、然后根据当前任务获取当前流程的流程定义: List tasks = taskService
1、首先maven导入基础依赖包的配置。
2、activiti主配置文件activiticfgxml连接数据库创建引擎的配置。
3、java测试代码。
4、项目结构如下图。
5、最后启动测试代码后数据库表如下图,就完成了。
注意事项:
Activiti将提供宽松的Apache许可20,以便这个项目可以广泛被使用,同时促进Activiti BPM引擎和BPMN 20的匹配,该项目现正由OMG通过标准审定。
1、启动流程在完成了流程定义部署后,就要启动流程实例了。/1启动流程当流程到达一个节点时,会在act_ru_execution表中产生1条数据如果当前节点是用户任务节点,这时会在act_
1、启动流程 在完成了流程定义部署后,就要启动流程实例了。
/
1 启动流程
当流程到达一个节点时,会在act_ru_execution表中产生1条数据
如果当前节点是用户任务节点,这时会在act_ru_task表中产生1条数据(任务的办理人,任务的创建时间)
/
@Test
public void startProcess() throws Exception {
/
v1 myProcess:2:604
v2 myProcess:3:704
/
// runtimeServicestartProcessInstanceById(processDefinitionId)
// 通过流程定义的key启动流程,会启动版本最高的流程
ProcessInstance pi = runtimeServicestartProcessInstanceByKey("LeaveFlow");
Systemoutprintln("pid:" + pigetId() +",activitiId:" + pigetActivityId());
}
2、查看流程状态
public void queryProcessState() throws Exception {
String processInstanceId="1401";
// 通过流程实例ID查询流程实例
ProcessInstance pi = runtimeServicecreateProcessInstanceQuery()processInstanceId(processInstanceId)singleResult();
if(pi!=null){
Systemoutprintln("当前流程在:" + pigetActivityId());
}else{
Systemoutprintln("流程已结束!!");
}
}
3、查看公有任务
对指定用户的可接取的公共任务执行查询。
public void queryCommonTask() throws Exception {
// 创建任务查询对象
TaskQuery taskQuery = taskServicecreateTaskQuery();
// 配置查询对象
String candidateUser="张三";
taskQuery
// 过滤条件
taskCandidateUser(candidateUser)
// 分页条件
// listPage(firstResult, maxResults)
// 排序条件
orderByTaskCreateTime()desc();
// 执行查询
List<Task> tasks = taskQuerylist();
Systemoutprintln("======================"+candidateUser+"的公共任务列表=================");
for (Task task : tasks) {
Systemoutprint("id:"+taskgetId()+",");
Systemoutprint("name:"+taskgetName()+",");
Systemoutprint("createTime:"+taskgetCreateTime()+",");
Systemoutprintln("assignee:"+taskgetAssignee());
}
}
说明:
1查询任务首先使用TaskService创建TaskQuery对象
2在查询对象上,添加taskCandidateUser过滤条件,代表过滤任务候 选者为自己的任务
3调用list方法返回指定用户的可接任务列表
4所有公共任务的assignee属性为空
4、查看私有任务
对指定用户的未完成的个人任务执行查询。
public void queryPersonalTask() throws Exception {
// 创建任务查询对象
TaskQuery taskQuery = taskServicecreateTaskQuery();
// 配置查询对象
// String assignee="user";
String assignee="李四";
taskQuery
// 过滤条件
taskAssignee(assignee)
// 分页条件
// listPage(firstResult, maxResults)
// 排序条件
orderByTaskCreateTime()desc();
// 执行查询
List<Task> tasks = taskQuerylist();
Systemoutprintln("======================"+assignee+"的代办任务列表=================");
for (Task task : tasks) {
Systemoutprint("id:"+taskgetId()+",");
Systemoutprint("name:"+taskgetName()+",");
Systemoutprint("createTime:"+taskgetCreateTime()+",");
Systemoutprintln("assignee:"+taskgetAssignee());
}
}
说明:
1) 因为是任务查询,所以从processEngine中应该得到TaskService
2) 使用TaskService获取到任务查询对象TaskQuery
3) 为查询对象添加查询过滤条件,使用taskAssignee指定任务的候选者(即查询指定用户的代办任务),添加分页排序等过滤条件
4) 调用list方法执行查询,返回办理者为指定用户的任务列表
5) 任务ID、名称、办理人、创建时间可以从act_ru_task表中查到。
6) Execution与ProcessInstance见56章节的介绍。在这种情况下,ProcessInstance相当于Execution
7) 如果assignee属性为部门经理,结果为空。因为现在流程只到了”填写请假申请”阶段,后面的任务还没有执行,即在数据库中没有部门经理可以办理的任务,所以查询不到。
8) 一个Task节点和Execution节点是1对1的情况,在task对象中使用Execution_来标示他们之间的关系
9) 任务ID在数据库表act_ru_task中对应“ID_”列
5、认领任务
通常一个任务为公共任务任务都有一个以上的候选者,用户想要办理它应该先进行认领任务 *** 作,即把自己变成任务的拥有者。
public void takeTask() throws Exception {
// claim 认领
String taskId="1404";
String userId="李四";
// 让指定userId的用户认领指定taskId的任务
taskServiceclaim(taskId, userId);
Systemoutprintln("认领 *** 作完毕!!");
}
说明:
1任务相关 *** 作,首先得到taskService
2确定被认领的任务ID和认领人ID
3调用taskService的claim(认领)方法,把公共任务变成指定用户的 私有任务
6、办理任务
public void complete() throws Exception {
String taskId = "1602";
// 完成任务
taskServicecomplete(taskId );
}
说明:
1) 办理任务,从ProcessEngine得到的是TaskService。
2) 当执行完这段代码,再以员工的身份去执行查询的时候,会发现这个时候已经没有数据了。
3) 对于执行完的任务,activiti将从act_ru_task表中删除该任务,下一个任务会被插入进来。
4) 以”部门经理”的身份进行查询,可以查到结果。因为流程执行到部门经理审批这个节点了。
5) 再执行办理任务代码,执行完以后以”部门经理”身份进行查询,没有结果。
6) 重复第3和4步直到流程执行完。
7、验证流程已经结束
在流程执行的过程中,创建的流程实例ID在整个过程中都不会变,当流程结束后,流程实例将会被删除
说明:
1) 因为是查询流程实例,所以先获取runtimeService
2) 创建流程历史查询对象,设置实例ID过滤参数
3) 由于一个流程实例ID只对应一个实例,使用singleResult执行查询返回一个唯一的结果,如果结果数量大于1,则抛出异常
4) 判断指定ID的实例是否存在,如果结果为空,则代表流程结束,实例已被删除
在流程资源文件中,每一个节点元素在activiti中都有对应的元素属性承载类,比如,UserTask任务节点,它的元素属性承载类为UserTask,相同,startEvent开始节点的元素承载类为StartEvent,在bpmn流程文件进行解析时,也是将xml文档中每个元素解析为对应的承载类,从而进行组装成一个BmpnModel模型,我们可以直接由activiti将bpmn xml文件解析为一个实例模型(下图所示),也可以完成通过自定义手动创建模型。
关于模型校验器更多细节可查看 activiti源码剖析之BpmnModel模型校验器
以上就是关于activiti流程引擎节点类型有哪些全部的内容,包括:activiti流程引擎节点类型有哪些、工作流Activiti表说明、activiti怎么通过taskid查询executionid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)