.NET CORE开源工作流引擎 - 可视化流程设计器 - 工作流表单设计器 - .NET快速开发平台 - .NET三层代码生成器 - 通用权限管理

.NET MVC CORE开源工作流平台,可视化流程设计器
步骤设置-子流程

image.png

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

子流程策略:

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

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

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

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

实例类型:

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

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

激活前事件:

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

    示例:

/// <summary>
/// 子流程激活前事件示例
/// </summary>
/// <param name="model">FlowEventParamsModel</param>
/// <returns>json格式字符串:每个人单独实例:[{"userId":"接收人id","instanceId":"子流程实例id","title":"子流程任务标题"}],所有人同一实例:{"instanceId":"子流程实例id","title":"子流程任务标题"}</returns>
public string SubflowActivateEvent(FlowEventParamsModel model)
{
    //返回子流程的业务数据id和任务标题。
    //如果是每个人单独实例,则需要每个人添加一条数据,对应一个单独的实例id和任务标题。
    if (model.SubFlowInstanceType == 1)
    {
        JsonArray jsonArray = [];
        if (model.SubFlowReceiverList != null)
        {
            foreach (var userModel in model.SubFlowReceiverList)
            {
                var subFlowInstanceId = IdGeneratorUtils.NextId();
                var subFlowTitle = "测试子流程-" + subFlowInstanceId.ToString() + "-" + userModel.Id.ToString();

                //组织子流程业务数据。
                Dictionary<string, object?> dataDict = [];
                dataDict.Add("id", subFlowInstanceId);
                dataDict.Add("title", subFlowTitle);
                dataDict.Add("field1", "测试子流程内容");
                dataDict.Add("field2", 100);
                ConnService.InsertData(model.ConnModel, dataDict, "rf_form_test", false);

                jsonArray.Add(new JsonObject()
                {
                    { "userId", userModel.Id },
                    { "instanceId", subFlowInstanceId },
                    { "title", subFlowTitle }
                });
            }
        }
        return jsonArray.ToString();
    }

    //如果是所有人同一实例,则只在子流程对应的业务表中添加一条数据,所有接收人返回一样的实例id和任务标题。
    //如果是所有人同一实例,直接返回JsonObject: {instanceId:"",title:""}字符串,不用返回JsonArray。
    var subFlowInstanceId1 = IdGeneratorUtils.NextId();
    var subFlowTitle1 = "测试子流程-" + subFlowInstanceId1.ToString();

    //组织子流程业务数据。
    Dictionary<string, object?> dataDict1 = [];
    dataDict1.Add("id", subFlowInstanceId1);
    dataDict1.Add("title", subFlowTitle1);
    dataDict1.Add("field1", "测试子流程内容");
    dataDict1.Add("field2", 100);
    ConnService.InsertData(model.ConnModel, dataDict1, "rf_form_test", false);

    JsonObject jsonObject = new()
    {
        { "instanceId", subFlowInstanceId1 },
        { "title", subFlowTitle1 }
    };
    return jsonObject.ToString();
}

    事件方法返回:

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

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

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