步骤设置-子流程

image.png

子流程:选择要在子流程步骤发起的子流程。

子流程策略:

    子流程发起即可提交:在子流程发起后此步即可提交到后续步骤。

    子流程完成才能提交:必须要等到子流程实例审批完成后此步骤才可以提交到后续步骤。

    子流程发起后自动提交:在子流程发起后此步骤自动提交到后续步骤(后续步骤要能找到默认处理人)。

    子流程完成后自动提交:在子流程实例审批完成后此步骤自动提交到后续步骤(后续步骤要能找到默认处理人)。

实例类型:

    所有人同一实例:子流程步骤如果有多个接收人,所有人同一实例,即子流程第一步有多个处理人,根据处理策略处理。

    每个人单独实例:子流程步骤如果有多个接收人,每个人单独一个实例。

激活前事件:

    事件用于产生子流程对应的表单数据,及返回子流程实例id(表单数据id), 任务标题。

    示例:

    /**
     * 测试子流程激活事件
     *
     * @param paramsModel FlowEventParamsModel
     * @return String json格式:[{userId:"接收人id",instanceId:"子流程实例id",title:"子流程任务标题"}]
     */
    @MethodReflectAuthorize
    public String subflowActivateEvent(FlowEventParamsModel paramsModel) {
        //这里组织子流程业务数据。
        ConnService connService1 = SpringBeanUtils.getBeanByClass(ConnService.class);
        LinkedHashMap<String, Object> linkedHashMap = connService1.getTableOneMap(paramsModel.getConnModel(), "select * from "
                + paramsModel.getTable() + " where " + paramsModel.getPrimaryKey() + "=" + paramsModel.getInstanceId());
    
        ObjectMapper objectMapper = JSONUtils.getObjectMapper();
        //返回子流程的业务数据id和任务标题。
        //如果是所有人同一实例,则只在子流程对应的业务表中添加一条数据,所有接收人返回一样的实例id和任务标题。
        //如果是所有人同一实例,直接返回ObjectNode: {instanceId:"",title:""}字符串,不用返回ArrayNode。
        /*long subflowInstanceId = IdGeneratorUtils.nextId();
        String subflowTitle = linkedHashMap.get("title") + "-子流程";
        linkedHashMap.put("id", subflowInstanceId);
        linkedHashMap.put("title", subflowTitle);
        connService1.insertData(paramsModel.getConnModel(), linkedHashMap, paramsModel.getTable(), false, null,
                paramsModel.getPrimaryKey());
        ObjectNode objectNode1 = objectMapper.createObjectNode();
        objectNode1.put("instanceId", subflowInstanceId);
        objectNode1.put("title", subflowTitle);
        return objectNode1.toString();*/
    
        //如果是每个人单独实例,则需要每个人添加一条数据,对应一个单独的实例id和任务标题。
        List<UserModel> receiverList = paramsModel.getSubFlowReceiverList();
        ArrayNode arrayNode = objectMapper.createArrayNode();
        for (UserModel userModel : receiverList) {
            long subflowInstanceId1 = IdGeneratorUtils.nextId();
            String subflowTitle = linkedHashMap.get("title") + "-子流程-" + subflowInstanceId1;
            linkedHashMap.put("id", subflowInstanceId1);
            linkedHashMap.put("title", subflowTitle);
            connService1.insertData(paramsModel.getConnModel(), linkedHashMap, paramsModel.getTable(), false, null,
                    paramsModel.getPrimaryKey());
            ObjectNode objectNode = objectMapper.createObjectNode();
            objectNode.put("userId", userModel.getId());
            objectNode.put("instanceId", subflowInstanceId1);
            objectNode.put("title", subflowTitle);
            arrayNode.add(objectNode);
        }
    
        return arrayNode.toString();
    }

    事件方法返回:

        如果是所有人同一实例: {instanceId:"子流程业务数据id",title:"子流程标题"}

        如果是每个人单独实例: [{userId:"接收人id",instanceId:"子流程业务数据id",title:"子流程标题"},...]

联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2024 重庆天知软件技术有限公司 版权所有