activity学习二(api对应的SQL)

activity表结构

表分类

表名

解释

一般数据

ACT_GE_BYTEARRAY

通用的流程定义和流程资源

ACT_GE_PROPERTY

系统相关属性

流程历史记录

ACT_HI_ACTINST

历史的流程实例

ACT_HI_ATTACHMENT

历史的流程附件

ACT_HI_COMMENT

历史的说明性信息

ACT_HI_DETAIL

历史的流程运行中的细节信息

ACT_HI_IDENTITYLINK

历史的流程运行过程中用户关系

ACT_HI_PROCINST

历史的流程实例

ACT_HI_TASKINST

历史的任务实例

ACT_HI_VARINST

历史的流程运行中的变量信息

用户用户组表

ACT_ID_GROUP

身份信息-组信息

ACT_ID_INFO

身份信息-组信息

ACT_ID_MEMBERSHIP

身份信息-用户和组关系的中间表

ACT_ID_USER

身份信息-用户信息

流程定义表

ACT_RE_DEPLOYMENT

部署单元信息

ACT_RE_MODEL

模型信息

ACT_RE_PROCDEF

已部署的流程定义

运行实例表

ACT_RU_EVENT_SUBSCR

运行时事件

ACT_RU_EXECUTION

运行时流程执行实例

ACT_RU_IDENTITYLINK

运行时用户关系信息

ACT_RU_JOB

运行时作业

ACT_RU_TASK

运行时任务

ACT_RU_VARIABLE

运行时变量表

//查询部署信息
代码:List<Deployment> list = repositoryService.createDeploymentQuery().deploymentNameLike("%" + name + "%")
      .listPage(firstResult, maxResults);
SQL: select distinct RES.* from ACT_RE_DEPLOYMENT RES WHERE RES.NAME_ like ? order by RES.ID_ asc LIMIT ? OFFSET ?
参数: %%(String), 10(Integer), 0(Integer)
//查询流程定义  根据多个部署ID 查
代码:List<ProcessDefinition> list = this.repositoryService.createProcessDefinitionQuery()
      .deploymentIds(deploymentIds).listPage(firstResult, maxResults);
SQL:select distinct RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ in ( ? , ? , ? , ? , ? ) order by RES.ID_ asc LIMIT ? OFFSET ?
参数:%%(String), 5(Integer), 0(Integer)
//查询流程定义   根据一个部署ID 查
代码:ProcessDefinition processDefinition = this.repositoryService.createProcessDefinitionQuery()
      .deploymentId(deploymentId).singleResult();
SQL: select distinct RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ?
参数:1(String), 2147483647(Integer), 0(Integer)
//查询流程图
ProcessDefinition processDefinition = this.repositoryService.createProcessDefinitionQuery()
      .deploymentId(deploymentId).singleResult();
// 2从流程定义对象里面得到图片的名称
String resourceName = processDefinition.getDiagramResourceName();
代码:InputStream stream = this.repositoryService.getResourceAsStream(deploymentId, resourceName);
SQL: select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? AND NAME_ = ?
参数:1(String), HelloWorld.png(String)
//启动流程
代码:String processDefinitionKey = LeaveBill.class.getSimpleName(); //ACT_RE_PROCDEF 表里的KEY值,这里写死了和类名一样的名字,就是部署的名字
Map<String, Object> variables = new HashMap<>();
// 设置流程变量去设置下个任务的办理人
variables.put("username", SessionUtils.getCurrentUserName());
this.runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);
// 1.查询最大版本号
SQL:select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null))
​​​​​​​参数:LeaveBill(String), LeaveBill(String)
//2.根据最大版本号查询流程定义表
SQL:select * from ACT_RE_PROCDEF where ID_ = ? 
参数:LeaveBill:1:5004(String)
//
select * from ACT_RU_JOB J where J.EXECUTION_ID_ = ? 
参数:5005(String)
select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
参数:5005(String)
select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ? 
参数:5005(String)
//添加数据

SQL: insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
 参数: 5007(String), 5005(String), 5005(String), null, username(String), 0(Integer), string(String), null, null, null, 李四(String), null, 2021-05-25 17:11:25.844(Timestamp), 2021-05-25 17:11:25.844(Timestamp)
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_HI_TASKINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, OWNER_, ASSIGNEE_, START_TIME_, CLAIM_TIME_, END_TIME_, DURATION_, DELETE_REASON_, TASK_DEF_KEY_, FORM_KEY_, PRIORITY_, DUE_DATE_, CATEGORY_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
参数: 5009(String), LeaveBill:1:5004(String), 5005(String), 5005(String), 李四(String), null, null, null, 李四(String), 2021-05-25 17:11:25.93(Timestamp), null, null, null, null, usertask1(String), null, 50(Integer), null, null, (String)
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_HI_PROCINST ( ID_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, START_TIME_, END_TIME_, DURATION_, START_USER_ID_, START_ACT_ID_, END_ACT_ID_, SUPER_PROCESS_INSTANCE_ID_, DELETE_REASON_, TENANT_ID_, NAME_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
参数: 5005(String), 5005(String), LeaveBill:6(String), LeaveBill:1:5004(String), 2021-05-25 17:11:25.843(Timestamp), null, null, null, startevent1(String), null, null, null, (String), null
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
参数: 5006(String), LeaveBill:1:5004(String), 5005(String), 5005(String), startevent1(String), null, null, Start(String), startEvent(String), null, 2021-05-25 17:11:25.844(Timestamp), 2021-05-25 17:11:25.924(Timestamp), 80(Long), (String), 5008(String), LeaveBill:1:5004(String), 5005(String), 5005(String), usertask1(String), 5009(String), null, 提交申请(String), userTask(String), 李四(String), 2021-05-25 17:11:25.925(Timestamp), null, null, (String)
DEBUG [http-nio-8080-exec-8] - <==    Updates: 2
SQL: insert into ACT_HI_IDENTITYLINK (ID_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_) values (?, ?, ?, ?, ?, ?) 
参数: 5010(String), participant(String), 李四(String), null, null, 5005(String)
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, PARENT_ID_, SUPER_EXEC_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
参数: 5005(String), 5005(String), LeaveBill:6(String), LeaveBill:1:5004(String), usertask1(String), true(Boolean), false(Boolean), true(Boolean), false(Boolean), null, null, 1(Integer), 2(Integer), (String), null
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_RU_TASK (ID_, REV_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, PRIORITY_, CREATE_TIME_, OWNER_, ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_, CATEGORY_, SUSPENSION_STATE_, TENANT_ID_, FORM_KEY_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
参数: 5009(String), 提交申请(String), null, null, 50(Integer), 2021-05-25 17:11:25.925(Timestamp), null, 李四(String), null, 5005(String), 5005(String), LeaveBill:1:5004(String), usertask1(String), null, null, 1(Integer), (String), null
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_RU_IDENTITYLINK (ID_, REV_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_, PROC_DEF_ID_) values (?, 1, ?, ?, ?, ?, ?, ?) 
参数: 5010(String), participant(String), 李四(String), null, null, 5005(String), null
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1
SQL: insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
参数: 5007(String), string(String), username(String), 5005(String), 5005(String), null, null, null, null, 李四(String), null
DEBUG [http-nio-8080-exec-8] - <==    Updates: 1

//查询我的待办

select distinct RES.* from ACT_RU_TASK RES WHERE RES.ASSIGNEE_ = ? order by RES.ID_ asc LIMIT ? OFFSET ?
参数:李四(String), 10(Integer), 0(Integer)

//待办任务  跳到页面

代码:Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();
SQL: select distinct RES.* from ACT_RU_TASK RES WHERE RES.ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 
 参数: 5009(String), 2147483647(Integer), 0(Integer)
 4,根据流程实例ID查询流程实例
代码:ProcessInstance processInstance = this.runtimeService.createProcessInstanceQuery()
				.processInstanceId(processInstanceId).singleResult();
SQL: select distinct RES.* , P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId from ACT_RU_EXECUTION RES inner join ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_ WHERE RES.PARENT_ID_ is null and RES.ID_ = ? and RES.PROC_INST_ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 
 参数: 5005(String), 5005(String), 2147483647(Integer), 0(Integer)

//完成任务

代码: Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();
SQL: select * from ACT_RU_TASK where ID_ = ? 
参数: 5009(String)
代码:this.taskService.addComment(taskId, processInstanceId, "[" + outcome + "]" + comment);
SQL: 1.  select * from ACT_RU_TASK where ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-7] - <==      Total: 1
2. select * from ACT_RU_EXECUTION where ID_ = ? 
参数: 5005(String)
DEBUG [http-nio-8080-exec-7] - <==      Total: 1
3. insert into ACT_HI_COMMENT (ID_, TYPE_, TIME_, USER_ID_, TASK_ID_, PROC_INST_ID_, ACTION_, MESSAGE_, FULL_MSG_) values (?, ?, ?, ?, ?, ?, ?, ?, ?) 
参数: 7501(String), comment(String), 2021-05-26 16:37:40.904(Timestamp), 李四(String), 5009(String), 5005(String), AddComment(String), [提交]嗯嗯嗯,同意(String), java.io.ByteArrayInputStream@4a9e9dae(ByteArrayInputStream)
代码:Map<String, Object> variables = new HashMap<>();
		variables.put("outcome", outcome);
		this.taskService.complete(taskId, variables);
SQL:1. select * from ACT_RU_TASK where ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
2.  select * from ACT_RU_EXECUTION where ID_ = ? 
参数: 5005(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
3. select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null 
参数: 5005(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
4. select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ? 
参数: 5005(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
5. select * from ACT_RU_TASK where PARENT_TASK_ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 0
6. select * from ACT_RU_IDENTITYLINK where TASK_ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 0
7. select * from ACT_RU_VARIABLE where TASK_ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 0
8. select * from ACT_HI_TASKINST where ID_ = ? 
参数: 5009(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
9. select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
参数: 5005(String)
DEBUG [http-nio-8080-exec-1] - <==      Total: 1
10. select RES.* from ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = ? and RES.ACT_ID_ = ? and RES.END_TIME_ is null order by RES.ID_ asc LIMIT ? OFFSET ? 
参数: 5005(String), usertask1(String), 1(Integer), 0(Integer)
//执行任务监听类,设置下一个办理人
	public void notify(DelegateTask delegateTask) {
		//得到当前用户
		User currentUser = SessionUtils.getCurrentUser();
		//取出领导ID
		Integer mgr=currentUser.getMgr();
		//取出IOC容器
		HttpServletRequest request=SessionUtils.getCurrentServletRequest();
		ApplicationContext applicationContext = WebApplicationContextUtils
                  .getWebApplicationContext(request.getServletContext());
		//从IOC容器里面取出UserService
		UserService userService=applicationContext.getBean(UserService.class);
		//3查询领导信息
		User leaderUser = userService.queryUserById(mgr);
		//4,设置办理人
		delegateTask.setAssignee(leaderUser.getName());
	}

API总结
1.几个接口(和表有对应关系):

ProcessDefinition—–act_re_procdef
ProcessInstance——act_ru_execution
Task—–act_ru_task

2.几个Query对象

DeploymentQuery——act_re_deployment
ProcessDefinitionQuery—–act_re_procdef
TaskQuery—–act_ru_task

3.几个Service

RepositoryService—-操作部署表、流程定义表等静态资源信息表
RuntimeService—-操作流程实例表、任务表等动态信息表
TaskService—–操作任务表
HistoryService—-操作历史表 IdentityService—-操作用户表、组表、关系表
formService--表单服务
identityService--实体服务

activiti工作流6大service服务的介绍:

第一大服务:仓储服务activiti的RepositoryService

  1. //仓储服务

  2. @Autowired

  3. private RepositoryService repositoryService;

仓储服务可以用来部署我们的流程图,还可以创建我们的流程部署查询对象,用于查询刚刚部署的流程列表,便于我们管理流程,方法如下。

  1. //这个是部署流程的方法,流程图以inputStream流的形式传入

  2. DeploymentBuilder builder = repositoryService.createDeployment();

  3. builder.name(process.getName());

  4. builder.addInputStream(fileName, inputStream);

  5. Deployment deployment = builder.deploy();

  6. //这个是流程部署列表查询的方法

  7. DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();

  8. //可以根据很多条件查询,我这是根据部署名称模糊查询

  9. List<Deployment> list = deploymentQuery.deploymentNameLike("%"+name+"%")

第二大服务:activiti运行时服务RuntimeService

  1. //运行时服务

  2. @Autowired

  3. private RuntimeService runtimeService;

运行时服务主要用来开启流程实例,一个流程实例对应多个任务,也就是多个流程节点,好比如请假审批是一个流程实例,部门主管,部门经理,总经理都是节点,我们开启服务是通过流程定义key或者流程定义id来开启的,方法如下:

  1. //首先根据部署id创建流程定义

  2. ProcessDefinition def = repositoryService.createProcessDefinitionQuery().

  3. deploymentId(form.getDeployId()).singleResult();

  4. //然后根据流程定义id或者key开启流程实例

  5. ProcessInstance proInst = runtimeService.startProcessInstanceById(def.getId());

备注:当我们用仓储服务部署了流程图之后,就会产生一个流程部署id,一个流程部署id对应一个流程定义,一个流程定义对应多个流程实例,一个流程实例对应多个任务节点,这样的逻辑应该明白吧,打个比方就是我设计了一个手机图纸(流程定义),是可以供N多个人生产出手机并去使用的,这些人就是流程实例,手机里面的各种功能就是任务节点。

第三大服务:activiti任务服务TaskService

  1. //任务服务

  2. @Autowired

  3. private TaskService taskService;

任务服务是用来可以用来领取,完成,查询任务列表功能的,使用方法分别如下:

  1. //根据任务id和用户领取任务

  2. taskService.claim(String taskId, String userId)

  3. //根据任务id完成自己节点的任务

  4. taskService.complete(String taskId)

  5. //创建任务查询对象之后根据候选人也就是任务处理人查询自己的任务列表

  6. taskService.createTaskQuery().taskAssignee(String assignee)

第四大服务:activiti历史服务HistoryService

//历史服务

@Autowired

private HistoryService historyService;

历史服务可以查看审批人曾经审批完成了哪些项目,审批项目总共花了多少时间,以及在哪个环节比较耗费时间等等,便于审批人查看历史信息,方法如下。

//根据审批人查看该审批人审批了哪些项目

List<HistoricTaskInstance> = historyService.createHistoricTaskInstanceQuery().

taskAssignee(String assignee).finished().list();

历史任务对象HistoricTaskInstance,它里面封装了任务开始时间,结束时间,该节点花费的时间等等信息。

第五大服务:activiti表单服务FormService,注入方法是一样的,本人几乎没有用到,具体作用没有好好研究,以后使用了再公布出来。

//表单服务@Autowiredprivate
 FormService formService;

第六大服务:activiti实体服务IdentityService,主要是操作用户信息,用户分组信息等,组信息包括如部门表和职位表,我一般都是自己建表来存储用户信息和组信息的,

//实体服务
@Autowired
​​​​​​​private IdentityService identityService;

经过以上的简单了解,我想应该能基本入门和使用activiti工作流框架创建简单的oa系统项目了,注意注入的服务名必须和xml配置的六个服务bean的id一样,ssm框架整合配置在最开始的地方已经公布了网址。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值