1、系统登录获取用户信息新增获取岗位信息

2、工作流待办任务分页展示实现
pull/254/head
xjs 3 years ago
parent ed336cac61
commit 0ffa1863c6

@ -97,6 +97,11 @@ public class SysUser extends BaseEntity
/** 岗位组 */ /** 岗位组 */
private Long[] postIds; private Long[] postIds;
/**
*
*/
private List<String> postCode;
/** 角色ID */ /** 角色ID */
private Long roleId; private Long roleId;
@ -318,6 +323,15 @@ public class SysUser extends BaseEntity
{ {
this.roleId = roleId; this.roleId = roleId;
} }
public List<String> getPostCode() {
return postCode;
}
public void setPostCode(List<String> postCode) {
this.postCode = postCode;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -1,8 +1,9 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import java.util.List;
/** /**
* *
* *
@ -41,6 +42,13 @@ public interface SysPostMapper
*/ */
public List<Long> selectPostListByUserId(Long userId); public List<Long> selectPostListByUserId(Long userId);
/**
* id
* @param userId
* @return
*/
List<String> selectPostCodeListByUserId(Long userId);
/** /**
* *
* *

@ -106,7 +106,11 @@ public class SysUserServiceImpl implements ISysUserService
@Override @Override
public SysUser selectUserByUserName(String userName) public SysUser selectUserByUserName(String userName)
{ {
return userMapper.selectUserByUserName(userName); SysUser sysUser = userMapper.selectUserByUserName(userName);
Long userId = sysUser.getUserId();
List<String> postCodes = postMapper.selectPostCodeListByUserId(userId);
sysUser.setPostCode(postCodes);
return sysUser;
} }
/** /**

@ -72,6 +72,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where post_code=#{postCode} limit 1 where post_code=#{postCode} limit 1
</select> </select>
<select id="selectPostCodeListByUserId" resultType="java.lang.String">
select p.post_code
from sys_post p
left join sys_user_post up on up.post_id = p.post_id
left join sys_user u on u.user_id = up.user_id
where u.user_id = #{userId}
</select>
<update id="updatePost" parameterType="SysPost"> <update id="updatePost" parameterType="SysPost">
update sys_post update sys_post
<set> <set>

@ -178,7 +178,7 @@
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
formDataSave(this.id,this.form.formData).then(response => { formDataSave(this.id,this.form.formData).then(response => {
this.msgSuccess("审批成功"); this.$modal.notifySuccess("审批成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });

@ -76,7 +76,7 @@
</el-table-column> </el-table-column>
<el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true"/> <el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true"/>
<el-table-column label="原因" align="center" prop="reason" :show-overflow-tooltip="true"/> <el-table-column label="原因" align="center" prop="reason" :show-overflow-tooltip="true"/>
<el-table-column label="流程进度" align="center" prop="taskName" :show-overflow-tooltip="true"/> <el-table-column label="任务节点名称" align="center" prop="taskName" :show-overflow-tooltip="true"/>
<el-table-column label="创建者" align="center" prop="createName" :show-overflow-tooltip="true"/> <el-table-column label="创建者" align="center" prop="createName" :show-overflow-tooltip="true"/>
<el-table-column label="开始时间" align="center" prop="leaveStartTime" width="180" :show-overflow-tooltip="true"> <el-table-column label="开始时间" align="center" prop="leaveStartTime" width="180" :show-overflow-tooltip="true">
@ -109,7 +109,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="historyFory(scope.row)" @click="historyFory(scope.row)"
v-hasPermi="['workflow:leave:edit']" v-hasPermi="['workflow:leave:query']"
>审批详情 >审批详情
</el-button> </el-button>

@ -0,0 +1,14 @@
请假流程:
发起人:任何人
流程keyleave
领导审核:当前账号的部门的 leader 编号的岗位
待办任务:
分页获取该任务的候选人或候选组
TODO
待办任务根据 组 查询

@ -78,7 +78,6 @@ public class ProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT) @Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
@PostMapping(value = "/uploadStreamAndDeployment") @PostMapping(value = "/uploadStreamAndDeployment")
@ApiOperation("上传并部署流程定义") @ApiOperation("上传并部署流程定义")
@RequiresPermissions("activiti:definition")
public AjaxResult uploadStreamAndDeployment(@RequestParam("file") MultipartFile file) throws IOException { public AjaxResult uploadStreamAndDeployment(@RequestParam("file") MultipartFile file) throws IOException {
processDefinitionService.uploadStreamAndDeployment(file); processDefinitionService.uploadStreamAndDeployment(file);
return AjaxResult.success(); return AjaxResult.success();
@ -94,7 +93,6 @@ public class ProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE) @Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
@PostMapping("/suspendOrActiveApply") @PostMapping("/suspendOrActiveApply")
@ApiOperation("启动挂起流程流程定义") @ApiOperation("启动挂起流程流程定义")
@RequiresPermissions("activiti:definition")
public AjaxResult suspendOrActiveApply(@RequestBody ProcessDefinitionDTO processDefinition) { public AjaxResult suspendOrActiveApply(@RequestBody ProcessDefinitionDTO processDefinition) {
processDefinitionService.suspendOrActiveApply(processDefinition.getId(), processDefinition.getSuspendState()); processDefinitionService.suspendOrActiveApply(processDefinition.getId(), processDefinition.getSuspendState());
return AjaxResult.success(); return AjaxResult.success();
@ -110,7 +108,6 @@ public class ProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT) @Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
@PostMapping(value = "/upload") @PostMapping(value = "/upload")
@ApiOperation("上传流程流程定义") @ApiOperation("上传流程流程定义")
@RequiresPermissions("activiti:definition")
public AjaxResult upload(@RequestParam("processFile") MultipartFile multipartFile) throws IOException { public AjaxResult upload(@RequestParam("processFile") MultipartFile multipartFile) throws IOException {
if (!multipartFile.isEmpty()) { if (!multipartFile.isEmpty()) {
@ -130,7 +127,6 @@ public class ProcessDefinitionController extends BaseController {
*/ */
@PostMapping(value = "/addDeploymentByString") @PostMapping(value = "/addDeploymentByString")
@ApiOperation("通过stringBPMN添加流程定义") @ApiOperation("通过stringBPMN添加流程定义")
@RequiresPermissions("activiti:definition")
public AjaxResult addDeploymentByString(@RequestParam("stringBPMN") String stringBPMN) { public AjaxResult addDeploymentByString(@RequestParam("stringBPMN") String stringBPMN) {
processDefinitionService.addDeploymentByString(stringBPMN); processDefinitionService.addDeploymentByString(stringBPMN);
return AjaxResult.success(); return AjaxResult.success();

@ -7,6 +7,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageDomain; import com.ruoyi.common.core.web.page.PageDomain;
import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.core.web.page.TableSupport; import com.ruoyi.common.core.web.page.TableSupport;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.xjs.activiti.domain.dto.ActTaskDTO; import com.xjs.activiti.domain.dto.ActTaskDTO;
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO; import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
import com.xjs.activiti.service.IActTaskService; import com.xjs.activiti.service.IActTaskService;
@ -30,6 +31,7 @@ public class TaskController extends BaseController {
//获取我的代办任务 //获取我的代办任务
@GetMapping(value = "/list") @GetMapping(value = "/list")
@RequiresPermissions("activiti:task:list")
public TableDataInfo getTasks() { public TableDataInfo getTasks() {
PageDomain pageDomain = TableSupport.buildPageRequest(); PageDomain pageDomain = TableSupport.buildPageRequest();
Page<ActTaskDTO> hashMaps = actTaskService.selectProcessDefinitionList(pageDomain); Page<ActTaskDTO> hashMaps = actTaskService.selectProcessDefinitionList(pageDomain);

@ -2,7 +2,7 @@ package com.xjs.activiti.domain;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO; import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
import org.activiti.api.task.model.Task; import org.activiti.engine.task.Task;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;

@ -4,6 +4,7 @@ package com.xjs.activiti.service.impl;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.ruoyi.common.core.web.page.PageDomain; import com.ruoyi.common.core.web.page.PageDomain;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.xjs.activiti.domain.ActWorkflowFormData; import com.xjs.activiti.domain.ActWorkflowFormData;
import com.xjs.activiti.domain.dto.ActTaskDTO; import com.xjs.activiti.domain.dto.ActTaskDTO;
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO; import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
@ -13,19 +14,21 @@ import org.activiti.api.runtime.shared.query.Pageable;
import org.activiti.api.task.model.Task; import org.activiti.api.task.model.Task;
import org.activiti.api.task.model.builders.TaskPayloadBuilder; import org.activiti.api.task.model.builders.TaskPayloadBuilder;
import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.api.task.runtime.TaskRuntime;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.FormProperty; import org.activiti.bpmn.model.FormProperty;
import org.activiti.bpmn.model.UserTask; import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.RepositoryService; import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.TaskQuery;
import org.activiti.runtime.api.model.impl.APITaskConverter;
import org.activiti.runtime.api.query.impl.PageImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -41,6 +44,8 @@ public class ActTaskServiceImpl implements IActTaskService {
@Autowired @Autowired
private RepositoryService repositoryService; private RepositoryService repositoryService;
@Autowired
private TaskService taskService;
@Autowired @Autowired
private TaskRuntime taskRuntime; private TaskRuntime taskRuntime;
@Autowired @Autowired
@ -48,29 +53,37 @@ public class ActTaskServiceImpl implements IActTaskService {
@Autowired @Autowired
private IActWorkflowFormDataService actWorkflowFormDataService; private IActWorkflowFormDataService actWorkflowFormDataService;
@Autowired
private APITaskConverter taskConverter;
@Override @Override
public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) { public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) {
Page<ActTaskDTO> list = new Page<ActTaskDTO>(); Page<ActTaskDTO> list = new Page<ActTaskDTO>();
org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime.tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize()));
List<Task> tasks = pageTasks.getContent(); //org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime
int totalItems = pageTasks.getTotalItems(); // .tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize()));
org.activiti.api.runtime.shared.query.Page<Task> taskQuery = this.createTaskQuery(pageDomain);
List<Task> tasks = taskQuery.getContent();
int totalItems = taskQuery.getTotalItems();
list.setTotal(totalItems); list.setTotal(totalItems);
if (totalItems != 0) { if (totalItems != 0) {
Set<String> processInstanceIdIds = tasks.parallelStream().map(t -> t.getProcessInstanceId()).collect(Collectors.toSet()); Set<String> processInstanceIdIds = tasks.parallelStream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIdIds).list(); List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIdIds).list();
List<ActTaskDTO> actTaskDTOS = tasks.stream() List<ActTaskDTO> actTaskDTOS = tasks.stream().map(t -> new ActTaskDTO(t, processInstanceList.parallelStream().filter(pi -> t.getProcessInstanceId().equals(pi.getId())).findAny().get())).collect(Collectors.toList());
.map(t -> new ActTaskDTO(t, processInstanceList.parallelStream().filter(pi -> t.getProcessInstanceId().equals(pi.getId())).findAny().get()))
.collect(Collectors.toList());
list.addAll(actTaskDTOS); list.addAll(actTaskDTOS);
} }
return list; return list;
} }
@Override @Override
public List<String> formDataShow(String taskID) { public List<String> formDataShow(String taskID) {
Task task = taskRuntime.task(taskID); //Task task = taskRuntime.task(taskID);
org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskID).singleResult();
/* ------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------
FormProperty_0ueitp2--__!!--__!!--__!!--__!! FormProperty_0ueitp2--__!!--__!!--__!!--__!!
@ -83,24 +96,28 @@ public class ActTaskServiceImpl implements IActTaskService {
*/ */
//注意!!!!!!!!:表单Key必须要任务编号一模一样因为参数需要任务key但是无法获取只能获取表单key“task.getFormKey()”当做任务key //注意!!!!!!!!:表单Key必须要任务编号一模一样因为参数需要任务key但是无法获取只能获取表单key“task.getFormKey()”当做任务key
UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId()) UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId()).getFlowElement(task.getFormKey());
.getFlowElement(task.getFormKey());
if (userTask == null) { if (userTask == null) {
return null; return null;
} }
List<FormProperty> formProperties = userTask.getFormProperties(); List<FormProperty> formProperties = userTask.getFormProperties();
List<String> collect = formProperties.stream().map(fp -> fp.getId()).collect(Collectors.toList()); return formProperties.stream().map(BaseElement::getId).collect(Collectors.toList());
return collect;
} }
@Override @Override
public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException { public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
Task task = taskRuntime.task(taskID); //Task task = taskRuntime.task(taskID);
org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskID).singleResult();
/*org.activiti.engine.task.Task task = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId,
userGroups).taskId(taskId).singleResult();*/
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
Boolean hasVariables = false;//没有任何参数 boolean hasVariables = false;//没有任何参数
HashMap<String, Object> variables = new HashMap<String, Object>(); HashMap<String, Object> variables = new HashMap<String, Object>();
//前端传来的字符串,拆分成每个控件 //前端传来的字符串,拆分成每个控件
List<ActWorkflowFormData> acwfds = new ArrayList<>(); List<ActWorkflowFormData> acwfds = new ArrayList<>();
@ -118,16 +135,34 @@ public class ActTaskServiceImpl implements IActTaskService {
} }
if (hasVariables) { if (hasVariables) {
//带参数完成任务 //带参数完成任务
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID) taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).withVariables(variables).build());
.withVariables(variables)
.build());
} else { } else {
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID) taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).build());
.build());
} }
//写入数据库 //写入数据库
return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds); return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
} }
/**
* task
*
* @param pageDomain
* @return
*/
private org.activiti.api.runtime.shared.query.Page<Task> createTaskQuery(PageDomain pageDomain) {
Pageable pageable = Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize());
String username = SecurityUtils.getUsername();
List<String> postCode = SecurityUtils.getLoginUser().getSysUser().getPostCode();
TaskQuery taskQuery = taskService.createTaskQuery()
.or()
//待办任务根据 组 查询
.taskCandidateOrAssigned(username, postCode)
.taskOwner(username)
.endOr();
List<Task> tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(), pageable.getMaxItems()));
return new PageImpl<>(tasks, Math.toIntExact(taskQuery.count()));
}
} }

@ -7,6 +7,7 @@ import com.xjs.activiti.domain.dto.ProcessDefinitionDTO;
import com.xjs.activiti.domain.vo.ActReDeploymentVO; import com.xjs.activiti.domain.vo.ActReDeploymentVO;
import com.xjs.activiti.mapper.ActReDeploymentMapper; import com.xjs.activiti.mapper.ActReDeploymentMapper;
import com.xjs.activiti.service.IProcessDefinitionService; import com.xjs.activiti.service.IProcessDefinitionService;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.HistoryService; import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService; import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
@ -82,7 +83,11 @@ public class ProcessDefinitionServiceImpl implements IProcessDefinitionService {
@Override @Override
public int deleteProcessDefinitionById(String id) { public int deleteProcessDefinitionById(String id) {
repositoryService.deleteDeployment(id, false); try {
repositoryService.deleteDeployment(id, true);
} catch (Exception e) {
throw new ActivitiException("该流程已使用!无法删除!如需删除,请先删除相关任务!");
}
return 1; return 1;
} }

@ -1,15 +1,20 @@
package com.xjs.workflow.leave.service.impl; package com.xjs.workflow.leave.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.text.UUID; import com.ruoyi.common.core.text.UUID;
import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.RemoteUserService;
import com.xjs.exception.BusinessException;
import com.xjs.workflow.leave.domain.WorkflowLeave; import com.xjs.workflow.leave.domain.WorkflowLeave;
import com.xjs.workflow.leave.mapper.WorkflowLeaveMapper; import com.xjs.workflow.leave.mapper.WorkflowLeaveMapper;
import com.xjs.workflow.leave.service.IWorkflowLeaveService; import com.xjs.workflow.leave.service.IWorkflowLeaveService;
import org.activiti.api.process.runtime.ProcessRuntime; import org.activiti.api.process.runtime.ProcessRuntime;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.ActivitiObjectNotFoundException;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
@ -104,16 +109,30 @@ public class WorkflowLeaveServiceImpl implements IWorkflowLeaveService {
String id = UUID.randomUUID().toString(); String id = UUID.randomUUID().toString();
workflowLeave.setId(id); workflowLeave.setId(id);
workflowLeave.setCreateTime(DateUtils.getNowDate()); workflowLeave.setCreateTime(DateUtils.getNowDate());
String join = StringUtils.join(remoteUserService.selectUserNameByPostCodeAndDeptId("se", SecurityUtils.getLoginUser().getSysUser().getDeptId()), ",");
//查询当前用户同一个部门的领导岗位用户
R<List<String>> listR = remoteUserService.selectUserNameByPostCodeAndDeptId("leader", SecurityUtils.getLoginUser().getSysUser().getDeptId());
if (listR.getCode() != HttpStatus.SUCCESS) {
throw new BusinessException("远程调用异常");
}
List<String> data = listR.getData();
String join = StringUtils.join(data, ",");
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("deptLeader", join); map.put("deptLeader", join);
ProcessInstance processInstance = runtimeService.createProcessInstanceBuilder() ProcessInstance processInstance = null;
try {
processInstance = runtimeService.createProcessInstanceBuilder()
.variables(map) .variables(map)
.processDefinitionKey("leave") .processDefinitionKey("leave")
.businessKey(id) .businessKey(id)
.name(workflowLeave.getTitle()) .name(workflowLeave.getTitle())
.start(); .start();
} catch (ActivitiObjectNotFoundException e) {
throw new ActivitiObjectNotFoundException("没有部署keyleave 的流程");
} catch (ActivitiException e) {
throw new ActivitiException("leave" + "-流程被挂起");
}
workflowLeave.setInstanceId(processInstance.getId()); workflowLeave.setInstanceId(processInstance.getId());
workflowLeave.setState(String.valueOf(ING.getCode())); workflowLeave.setState(String.valueOf(ING.getCode()));

@ -69,6 +69,11 @@
<appender-ref ref="console" /> <appender-ref ref="console" />
</logger> </logger>
<!--开启activiti日志-->
<logger name="org.activiti.engine.impl.persistence.entity" level="trace">
<appender-ref ref="console"/>
</logger>
<root level="info"> <root level="info">
<appender-ref ref="console" /> <appender-ref ref="console" />
</root> </root>

Loading…
Cancel
Save