/// <summary>
        /// 创建协同审批数据
        /// </summary>
        /// <param name="dic">审批表单对象数据</param>
        /// <param name="requestName">申请名称</param>
        /// <param name="creatorId">协同申请人 ID</param>
        /// <param name="xtWorkFlowCode">协同工作流编码</param>
        /// <returns></returns>
        private static WorkflowRequestInfo CreateWorkFlowRequestInfo(Dictionary <string, object> dic, string requestName, string creatorId, XtWorkFlowCode xtWorkFlowCode)
        {
            string workFlowId = ((int)xtWorkFlowCode).ToString();

            if (string.IsNullOrWhiteSpace(workFlowId))
            {
                throw new Exception("未配置相关审批流程!");
            }

            List <WorkflowDetailTableInfo> detailTableInfos = new List <WorkflowDetailTableInfo>();
            WorkflowRequestInfo            data             = new WorkflowRequestInfo()
            {
                requestName  = requestName + DateTime.Now.ToString(),
                creatorId    = creatorId,
                requestLevel = "0",             // 0 正常, 1 重要, 2 紧急

                workflowMainTableInfo = new WorkflowMainTableInfo()
                {
                    requestRecords = new WorkflowRequestTableRecord[]
                    {
                        GetRequestTableRecord(dic, detailTableInfos)
                    }
                },
                workflowDetailTableInfos = detailTableInfos.ToArray(),
                workflowBaseInfo         = new WorkflowBaseInfo()
                {
                    workflowId = workFlowId
                }
            };

            return(data);
        }
        /// <summary>
        /// 提交表单数据至协同创建审批流接口,返回生成的流程 ID
        /// </summary>
        /// <param name="data">表单数据</param>
        /// <param name="userId">创建人 ID(协同平台的用户 ID)</param>
        /// <returns></returns>
        private static string GetFlowId(WorkflowRequestInfo data, int userId)
        {
            WorkflowServicePortTypeClient workFlowClient = new WorkflowServicePortTypeClient();
            var result = workFlowClient.doCreateWorkflowRequest(data, userId);

            int returnFlowId;

            if (int.TryParse(result, out returnFlowId))
            {
                if (returnFlowId > 0)
                {
                    return(result);
                }
                else
                {
                    string error = "";
                    switch (returnFlowId)
                    {
                    case -1:
                        error = "创建流程失败!";
                        break;

                    case -2:
                        error = "用户没有流程创建权限!";
                        break;

                    case -3:
                        error = "创建流程基本信息失败!";
                        break;

                    case -4:
                        error = "保存表单主表信息失败!";
                        break;

                    case -5:
                        error = "更新紧急程度失败!";
                        break;

                    case -6:
                        error = "流程操作者失败!";
                        break;

                    case -7:
                        error = "流转至下一节点失败!";
                        break;

                    case -8:
                        error = "节点附加操作失败!";
                        break;

                    default:
                        error = "发起流程申请失败!";
                        break;
                    }

                    throw new Exception(error);
                }
            }
            return(result);
        }
        /// <summary>
        /// 发起协同审批申请,并获取协同申请返回的申请流程 ID
        /// </summary>
        /// <typeparam name="T">审批对象类型</typeparam>
        /// <param name="model">审批对象实体</param>
        /// <param name="requestName">申请名称</param>
        /// <param name="creatorId">协同申请人 ID</param>
        /// <param name="xtWorkFlowCode">协同工作流编码</param>
        /// <returns></returns>
        public static string GetFlowId <T>(T model, string requestName, string creatorId, XtWorkFlowCode xtWorkFlowCode)
            where T : class
        {
            Dictionary <string, object> dic  = GetProperties(model);
            WorkflowRequestInfo         data = CreateWorkFlowRequestInfo(dic, requestName, creatorId, xtWorkFlowCode);

            return(GetFlowId(data, Convert.ToInt32(creatorId)));
        }
예제 #4
0
        static async Task Main(string[] args)
        {
            WorkflowBaseInfo workflowBaseInfo = new WorkflowBaseInfo();          //工作流信息

            workflowBaseInfo.workflowId   = workflowId;                          //流程ID
            workflowBaseInfo.workflowName = workflowName;                        //流程名称

            WorkflowRequestInfo workflowRequestInfo = new WorkflowRequestInfo(); //工作流程请求信息

            workflowRequestInfo.canEdit          = true;
            workflowRequestInfo.canView          = true;
            workflowRequestInfo.requestLevel     = "0";
            workflowRequestInfo.creatorId        = userId.ToString();
            workflowRequestInfo.requestName      = $"{workflowName}-杨科-{ DateTime.Now:yyyy-MM-dd}";
            workflowRequestInfo.workflowBaseInfo = workflowBaseInfo;

            #region 创建流程信息

            //创建主表字段信息
            List <WorkflowRequestTableField> mainTableField01 = new List <WorkflowRequestTableField>
            {
                new WorkflowRequestTableField
                {
                    fieldName  = "sqr",
                    fieldValue = userId.ToString(),
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "sqrq",
                    fieldValue = DateTime.Now.ToString("yyyy-MM-dd"),
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "szgs",
                    fieldValue = "243",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "szbm",
                    fieldValue = "1448",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "gc1",
                    fieldValue = "5",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "kcdd1",
                    fieldValue = "600",
                    view       = true,
                    edit       = true
                },
            };

            //创建明细表字段信息
            List <WorkflowRequestTableField> detailTableField01 = new List <WorkflowRequestTableField>
            {
                new WorkflowRequestTableField
                {
                    fieldName  = "wl",
                    fieldValue = "3011100017",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "wlms",
                    fieldValue = "二级板_6-12_A_负",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "dw",
                    fieldValue = "PC",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "wlzygz1",
                    fieldValue = "3011100014",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "wlmszygz",
                    fieldValue = "二级板_8-10_A_正",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "dw1",
                    fieldValue = "PC",
                    view       = true,
                    edit       = true
                },
                new WorkflowRequestTableField
                {
                    fieldName  = "sl",
                    fieldValue = "10",
                    view       = true,
                    edit       = true
                }
            };


            //添加表单主表记录
            List <WorkflowRequestTableRecord> mainTableRecord = new List <WorkflowRequestTableRecord>
            {
                new WorkflowRequestTableRecord
                {
                    workflowRequestTableFields = mainTableField01.ToArray()
                }
            };

            //添加表单明细记录
            List <WorkflowRequestTableRecord> detailTableRecord = new List <WorkflowRequestTableRecord>
            {
                new WorkflowRequestTableRecord
                {
                    workflowRequestTableFields = detailTableField01.ToArray()
                }
            };

            //主表构造赋值
            WorkflowMainTableInfo mainTableInfo = new WorkflowMainTableInfo
            {
                requestRecords = mainTableRecord.ToArray(),
            };

            //明细表构造赋值
            List <WorkflowDetailTableInfo> detailTableInfo = new List <WorkflowDetailTableInfo>
            {
                new WorkflowDetailTableInfo
                {
                    workflowRequestTableRecords = detailTableRecord.ToArray()
                }
            };

            workflowRequestInfo.workflowMainTableInfo    = mainTableInfo;
            workflowRequestInfo.workflowDetailTableInfos = detailTableInfo.ToArray();

            #endregion

            //创建明细表信息

            #region 开始调用接口
            // 创建 HTTP 绑定对象
            var binding = new BasicHttpBinding
            {
                //设置最大传输接受数量
                MaxReceivedMessageSize = 2147483647
            };

            // 根据 WebService 的 URL 构建终端点对象
            var endpoint = new EndpointAddress("http://10.0.10.210/services/WorkflowService");
                        // 创建调用接口的工厂,注意这里泛型只能传入接口 添加服务引用时生成的 webservice的接口 一般是 (XXXSoap)
                        var factory = new ChannelFactory <WorkflowServicePortType>(binding, endpoint);
            //factory.Credentials.UserName.UserName = AppSettings.Configuration["ServiceAuth:UserNmae"];
            //factory.Credentials.UserName.Password = AppSettings.Configuration["ServiceAuth:PassWord"];
            // 从工厂获取具体的调用实例


            var client = factory.CreateChannel();


            Console.WriteLine(await client.doCreateWorkflowRequestAsync(workflowRequestInfo, userId));

            #endregion

            Console.ReadKey();
        }