/// <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))); }
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(); }