工作流

1、定任务   可视化工具弄出   .bpms。

 

2、数据库插入   人  组

3开始就是流程任务与业务逻辑关联代码

3、启动流程

/**

     * 启动流程

     *

     * @param entity

     */

   publicProcessInstance startWorkflow(Leave entity, Map<String, Object>variables) {

        leaveManager.saveLeave(entity);

        logger.debug("save entity: {}", entity);

        String businessKey =entity.getId().toString();

 

        ProcessInstance processInstance = null;

        try {

            // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator

            identityService.setAuthenticatedUserId(entity.getUserId());

 

            processInstance = runtimeService.startProcessInstanceByKey("leave",businessKey, variables);

            String processInstanceId =processInstance.getId();

            entity.setProcessInstanceId(processInstanceId);

            logger.debug("start process of {key={}, bkey={}, pid={}, variables={}}", newObject[]{"leave",businessKey, processInstanceId, variables});

        } finally {

            identityService.setAuthenticatedUserId(null);

        }

        return processInstance;

}

 

 

4、部门领导签收任务

/**

     * 查询待办任务

     *

     * @param userId 用户ID

     * @return

     */

   @Transactional(readOnly= true)

   publicList<Leave> findTodoTasks(String userId, Page<Leave> page, int[] pageParams) {

        List<Leave> results = newArrayList<Leave>();

 

        // 根据当前人的ID查询

        TaskQuery taskQuery = taskService.createTaskQuery().taskCandidateOrAssigned(userId);

        List<Task> tasks =taskQuery.list();

 

        // 根据流程的业务ID查询实体并关联

        for (Task task : tasks) {

            String processInstanceId =task.getProcessInstanceId();

            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).active().singleResult();

            String businessKey =processInstance.getBusinessKey();

            if (businessKey == null) {

                continue;

            }

            Leave leave = leaveManager.getLeave(new Long(businessKey));

            leave.setTask(task);

            leave.setProcessInstance(processInstance);

           leave.setProcessDefinition(getProcessDefinition(processInstance.getProcessDefinitionId()));

            results.add(leave);

        }

 

        page.setTotalCount(taskQuery.count());

        page.setResult(results);

        return results;

    }

 

5、完成任务

 

   /**

     * 完成任务

     *

     * @param id

     * @return

     */

   @RequestMapping(value= "complete/{id}", method = {RequestMethod.POST, RequestMethod.GET})

   @ResponseBody

   publicString complete(@PathVariable("id")String taskId, Variable var) {

        try {

            Map<String, Object> variables= var.getVariableMap();

            taskService.complete(taskId, variables);

            return "success";

        } catch (Exception e) {

            logger.error("error on complete task {}, variables={}", newObject[]{taskId, var.getVariableMap(), e});

            return "error";

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值