目录
可以在FlowTaskServiceImpl.java中设置相应的办法来处理待办事项、已办事项和办结事项,通过传递serviceKey来获取不同类型的申请
serviceKey定义:
ExcApply: 0
ExtApply: 1
Extarrangement: 2
ChangeScoresApply: 3
实验管理员需要处理多项申请,所以需要获取待办事项和已办事项
获取待办事项
为了获取待办事项,可以调用flowable的接口
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
.includeProcessVariables()
.taskCandidateUser(username)
.orderByTaskCreateTime().desc();
调用这个接口来获取用户的待办列表
taskService.createTaskQuery()
.active()
.includeProcessVariables()
.taskCandidateUser(username)
taskCandidateUser(username)可以获取到候选人为此用户名的任务,即为待办事项,orderByTaskCreateTime().desc()能够将查询出的task按照创建时间降序排列
但是taskQuery只能获取到task(任务)的id与name,因此需要从数据库中再查询出申请信息。
因此还需要用sql语句查询数据库,但是对于具体流程使用sql语句查询数据库需要很准确地了解flowable数据库的定义以及存储数据
flowable数据库
flowable数据表分类:
1.ACT_GE_*:通用数据表,各种情况都使用的数据
2.ACT_RE_*:流程定义存储表,'RE'表示repository。此前缀的表存放的都是静态信息,如流程定义等。最开始用前端界面创建流程图是就把信息存储在此类表中
3.ACT_ID_*:身份信息表,'ID'表示identity。这些表中包含标识的信息,如用户、用户组等标识
4.ACT_RU_*:运行时数据库表,'RU'表示runtime,这些表存储着流程变量、用户任务、变量、指责等运行时的数据。
5.ACT_HI_*:'HI'表示history。这些表包含历史相关数据,如结束的流程实例,变量,任务等。
TodoList待办列表:
了解了数据库表格储存的信息,调用flowable的接口,获取到候选人Candidate为用户的任务记录,其id为flow_my_bussiness中的task_id
获取到task_id,可以在flow_my_business查询到此条申请的data_id,此条申请的data_id就是exc_apply的id
理清数据库的关系,可以写各个服务的todoList()方法
FlowMyBusinessMapper.xml:
首先通过task_id得到这条数据的data_id,然后再通过data_id找到相应的申请数据库中的申请信息
//获取flow_my_business中待办的business
<select id="getTodoBusiness" resultType="org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness">
select *
from flow_my_business
where todo_users like CONCAT('%',#{todousers},'%') and process_definition_key = #{serviceKey}
</select>
//获取相应的ExcApply
<select id="getExcApply" resultType="org.jeecg.modules.flowable.apithird.business.entity.ExcApply">
select *
from exc_apply
where id = #{dataid}
</select>
//获取相应的ExtApply
<select id="getExtApply" resultType="org.jeecg.modules.flowable.apithird.business.entity.ExtApply">
select *
from ext_apply
where id = #{dataid}
</select>
//获取相应的Extarrangement
<select id="getExtarrangement" resultType="org.jeecg.modules.flowable.apithird.business.entity.Extarrangement">
select *
from extarrangement
where id = #{dataid}
</select>
//获取相应的ChangeScoresApply
<select id="getChangeScoresApply" resultType="org.jeecg.modules.flowable.apithird.business.entity.ChangeScoresApply">
select *
from change_scores_apply
where id = #{dataid}
</select>
FlowMyBusinessMapper和IFlowMyBusinessService中只需要加个方法声明,不再赘述
FlowMyBusinessServiceImpl:
//获取待办
@Override
public List<FlowMyBusiness> getTodoBusiness(String todousers,String serviceKey) {
return this.baseMapper.getTodoBusiness(todousers,serviceKey);
}
//获取相应的ExcApply
@Override
public ExcApply getExcApply(String dataid) {
return this.baseMapper.getExcApply(dataid);
}
//获取相应的ExtApply
@Override
public ExtApply getExtApply(String dataid) {
return this.baseMapper.getExtApply(dataid);
}
//获取相应的Extarrangement
@Override
public Extarrangement getExtarrangement(String dataid) {
return this.baseMapper.getExtarrangement(dataid);
}
//获取相应的ChangeScoresApply
@Override
public ChangeScoresApply getChangeScoresAply(String dataid) {
return this.baseMapper.getChangeScoresApply(dataid);
}
FlowTaskServiceImpl:
之前提到FlowTaskServiceImpl中主要书写了关于任务的处理方式,所以要在FlowTaskServiceImpl中新写todoList1()
@Override
public Result todoList1(Integer pageNum, Integer pageSize, String serviceType) {
String username = iFlowThirdService.getLoginUser().getUsername();