protected override void Execute(NativeActivityContext context) { bool waitforcompleted = WaitForCompleted.Get(context); string WorkflowInstanceId = context.WorkflowInstanceId.ToString(); // IDictionary<string, object> _payload = new System.Dynamic.ExpandoObject(); var param = new Dictionary <string, object>(); if (Arguments == null || Arguments.Count == 0) { var vars = context.DataContext.GetProperties(); foreach (dynamic v in vars) { var value = v.GetValue(context.DataContext); if (value != null) { //_payload.Add(v.DisplayName, value); try { var test = new { value }; if (value.GetType() == typeof(System.Data.DataView)) { continue; } if (value.GetType() == typeof(System.Data.DataRowView)) { continue; } //if (value.GetType() == typeof(System.Data.DataTable)) //{ // if (value != null) param[v.DisplayName] = ((System.Data.DataTable)value).ToJArray(); //} //else //{ // var asjson = JObject.FromObject(test); // param[v.DisplayName] = value; //} // var asjson = JObject.FromObject(test); param[v.DisplayName] = value; } catch (Exception) { } } else { param[v.DisplayName] = value; } } } else { Dictionary <string, object> arguments = (from argument in Arguments where argument.Value.Direction != ArgumentDirection.Out select argument).ToDictionary((KeyValuePair <string, Argument> argument) => argument.Key, (KeyValuePair <string, Argument> argument) => argument.Value.Get(context)); foreach (var a in arguments) { var value = a.Value; if (value != null) { if (value.GetType() == typeof(System.Data.DataView)) { continue; } if (value.GetType() == typeof(System.Data.DataRowView)) { continue; } //if (value.GetType() == typeof(System.Data.DataTable)) //{ // if (value != null) param[a.Key] = ((System.Data.DataTable)value).ToJArray(); //} //else //{ // param[a.Key] = a.Value; //} param[a.Key] = a.Value; } else { param[a.Key] = null; } } } try { var Instance = WorkflowInstance.Instances.Where(x => x.InstanceId == context.WorkflowInstanceId.ToString()).FirstOrDefault(); // , string SpanId, string ParentSpanId var workflowid = this.workflow.Get(context); var workflow = RobotInstance.instance.GetWorkflowByIDOrRelativeFilename(workflowid); if (workflow == null) { throw new ArgumentException("Failed locating workflow " + workflowid); } IWorkflowInstance instance = null; Views.WFDesigner designer = null; GenericTools.RunUI(() => { designer = RobotInstance.instance.GetWorkflowDesignerByIDOrRelativeFilename(this.workflow.Get(context)) as Views.WFDesigner; if (designer != null) { designer.BreakpointLocations = null; instance = workflow.CreateInstance(param, null, null, designer.IdleOrComplete, designer.OnVisualTracking, null, Instance.SpanId); } else { instance = workflow.CreateInstance(param, null, null, RobotInstance.instance.Window.IdleOrComplete, null, null, Instance.SpanId); } instance.caller = WorkflowInstanceId; }); Log.Verbose("InvokeOpenRPA: Run Instance ID " + instance._id); if (waitforcompleted) { context.CreateBookmark(instance._id, new BookmarkCallback(OnBookmarkCallback)); if (instance.Bookmarks == null) { instance.Bookmarks = new Dictionary <string, object>(); } instance.Bookmarks.Add(instance._id, null); //((WorkflowInstance)instance).wfApp.Persist(); } GenericTools.RunUI(() => { if (designer != null) { designer.Run(designer.VisualTracking, designer.SlowMotion, instance); } else { instance.Run(); } }); } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override void Execute(NativeActivityContext context) { bool waitforcompleted = WaitForCompleted.Get(context); string WorkflowInstanceId = context.WorkflowInstanceId.ToString(); // IDictionary<string, object> _payload = new System.Dynamic.ExpandoObject(); var param = new Dictionary <string, object>(); var vars = context.DataContext.GetProperties(); foreach (dynamic v in vars) { var value = v.GetValue(context.DataContext); if (value != null) { //_payload.Add(v.DisplayName, value); try { var test = new { value = value }; if (value.GetType() == typeof(System.Data.DataTable)) { continue; } if (value.GetType() == typeof(System.Data.DataView)) { continue; } if (value.GetType() == typeof(System.Data.DataRowView)) { continue; } // var asjson = JObject.FromObject(test); param[v.DisplayName] = value; } catch (Exception) { } } else { param[v.DisplayName] = value; } } try { var workflow = RobotInstance.instance.GetWorkflowByIDOrRelativeFilename(this.workflow); IWorkflowInstance instance = null; Views.WFDesigner designer = null; GenericTools.RunUI(() => { designer = RobotInstance.instance.GetWorkflowDesignerByIDOrRelativeFilename(this.workflow) as Views.WFDesigner; if (designer != null) { designer.BreakpointLocations = null; instance = workflow.CreateInstance(param, null, null, designer.OnIdle, designer.OnVisualTracking); } else { instance = workflow.CreateInstance(param, null, null, MainWindow.instance.IdleOrComplete, null); } instance.caller = WorkflowInstanceId; }); Log.Verbose("InvokeOpenRPA: Run Instance ID " + instance._id); if (waitforcompleted) { context.CreateBookmark(instance._id, new BookmarkCallback(OnBookmarkCallback)); } //GenericTools.RunUI(() => //{ // if (designer != null) // { // designer.Run(MainWindow.instance.VisualTracking, MainWindow.instance.SlowMotion, instance); // } // else // { // instance.Run(); // } //}); if (designer != null) { designer.Run(designer.VisualTracking, designer.SlowMotion, instance); } else { instance.Run(); } } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override void Execute(NativeActivityContext context) { string WorkflowInstanceId = context.WorkflowInstanceId.ToString(); // IDictionary<string, object> _payload = new System.Dynamic.ExpandoObject(); var param = new Dictionary <string, object>(); var vars = context.DataContext.GetProperties(); foreach (dynamic v in vars) { var value = v.GetValue(context.DataContext); if (value != null) { //_payload.Add(v.DisplayName, value); try { var test = new { value = value }; if (value.GetType() == typeof(System.Data.DataTable)) { continue; } if (value.GetType() == typeof(System.Data.DataView)) { continue; } if (value.GetType() == typeof(System.Data.DataRowView)) { continue; } // var asjson = JObject.FromObject(test); param[v.DisplayName] = value; } catch (Exception) { } } else { param[v.DisplayName] = value; } } try { var workflow = MainWindow.instance.GetWorkflowById(this.workflow); WorkflowInstance instance = null; Views.WFDesigner designer = null; GenericTools.RunUI(() => { designer = MainWindow.instance.GetDesignerById(this.workflow); if (designer != null) { instance = workflow.CreateInstance(param, null, null, designer.onIdle, designer.onVisualTracking); } else { instance = workflow.CreateInstance(param, null, null, MainWindow.instance.idleOrComplete, null); } }); Log.Information("Run Instance ID " + instance._id); context.CreateBookmark(instance._id, new BookmarkCallback(OnBookmarkCallback)); GenericTools.RunUI(() => { if (designer != null) { designer.Run(MainWindow.instance.VisualTracking, MainWindow.instance.SlowMotion, instance); } else { instance.Run(); } }); } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }