Example #1
0
 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;
     }
 }