public static object Excete(WorkFlowNodeMethod nodeMethod, IWorkSheetBase sheet, IWorkItemBase item, params object[] parameters) { try { var handler = handlers.First(p => p.Key == nodeMethod.Key).Value; handler = handler.CreateInstance(item, sheet); var methods = handler.GetType().GetMethods(); foreach (var method in methods) { if (method.IsPublic && method.Name == nodeMethod.MethodName && method.GetParameters().Length == parameters.Length) { var result = method.Invoke(handler, parameters); return(result); } } } catch (Exception ex) { var message = $"执行工作流节点{nodeMethod.Key}异常,{sheet.Id}/{item.Id}/{nodeMethod.MethodLabel}/{nodeMethod.State}"; WorkFlowEngine.DataProvider.LogError(message, ex); return(new { Result = false, Message = message, Error = ex.Message }); } return(null); }
public static object Excete(this WorkFlowNodeMethod method, IWorkSheetBase sheet, IWorkItemBase item, out string message) { message = default(String); if (item.CurrentNode.Key != method.Key) { message = "子工单当前状态不适用此处理方法"; return(null); } try { return(NodeHandlerContainer.Excete(method, sheet, item, method.Parameters.Select(p => p.Value).ToArray())); } catch (System.Exception ex) { message = ex.Message; throw ex; } }