public NodeUserControl() { InitializeComponent(); workflowNode = new WorkflowNode(); //workflowNode.WorkFlowNodeId = this.ControlName; label2.ContextMenuStrip = contextMenuStrip1; }
private void advanceOnThisThread() { this.feedbackLabel.setText("See what it may look like to use ActivityRecommender!"); this.timer = null; WorkflowNode node = null; try { node = this.steps[stepNumber]; node.Process(); if (this.viewManager.NeedsRelayout) { System.Diagnostics.Debug.WriteLine("DemoLayout waiting for ViewManager to complete layout"); } else { this.sleepAndStep(); } this.stepNumber++; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("DemoLayout error processing node " + node + ": " + ex); this.viewManager.LayoutCompleted -= ViewManager_LayoutCompleted; } }
public static WorkflowNode Desearializeworkflownodexml(XmlNode xmlnode) { WorkflowNode wnode = new WorkflowNode(); if (xmlnode.Attributes["id"] != null) { string workflownodeid = xmlnode.Attributes["id"].Value; bool isstart = bool.Parse(xmlnode.Attributes["isstart"].Value); string scenario = xmlnode.Attributes["scenario"].Value; } foreach (XmlNode cnode in xmlnode.ChildNodes) { if (cnode.Name == "FormPatterns") { wnode.FormPatterns = FormPatterns.Desearilize(cnode); } else if (cnode.Name == "DataPatterns") { wnode.DataPatterns = DataPatterns.Desearilize(cnode); } else if (cnode.Name == "dataobject") { wnode.DataObject = EIBFormDesigner.Workflow.Node.DataObject.Desearilize(cnode); } else if (cnode.Name == "UserPatterns") { wnode.UserPatterns = UserPatterns.Desearilize(cnode); } } return(wnode); }
public ActionResult WorkflowImage(string instanceID) { JavaScriptSerializer serializer = new JavaScriptSerializer(); ViewBag.Result = serializer.Serialize(WorkflowInstance.GetInstance(instanceID)); DataTable dt = WorkflowNode.GetRecord(instanceID); //WorkflowServiceProvider.OfType<IWorkflowActor>().GetRecord(instanceID); ViewBag.Record = Newtonsoft.Json.JsonConvert.SerializeObject(dt); return(View()); }
private bool CanAddSourcePoint(WorkflowStepInfo step) { if (step != null) { Node node = WorkflowNode.GetInstance(step); if (NodeSourcePointsLimits.Max[node.Type] <= step.StepDefinition.SourcePoints.Count) { return(false); } return(true); } return(false); }
public static void saveXMLofNode(Control nodeControl, XmlNode xmlNode) { if (nodeControl != null) { EIBNode nodeEIB = (EIBNode)nodeControl; WorkflowNode workflowNode = nodeEIB.WorkFlowNode; //Save workflow Node Hashtable controlProperties = new Hashtable(); //Save Form Pattern FormPatterns formpatterns = workflowNode.FormPatterns; //controlProperties.Clear(); XmlNode xmlformpatternsnode = formpatterns.Searialize(xmlNode.OwnerDocument); xmlNode.AppendChild(xmlformpatternsnode); //Save Data Pattern DataPatterns dataPatterns = workflowNode.DataPatterns; //controlProperties.Clear(); XmlNode xmldatapatternsnode = dataPatterns.Searialize(xmlNode.OwnerDocument); xmlNode.AppendChild(xmldatapatternsnode); //Save Data Pattern EIBFormDesigner.Workflow.Node.DataObject dataObject = workflowNode.DataObject; //controlProperties.Clear(); XmlNode dataObjectNode = XMLServices.writeElement(xmlNode, "dataobject", controlProperties, null, null); //Save Data Info section //controlProperties.Clear(); XMLServices.writeElement(dataObjectNode, "info", controlProperties, null, null); //Save Data data section //controlProperties.Clear(); XMLServices.writeElement(dataObjectNode, "data", controlProperties, null, null); //Save Data status section //controlProperties.Clear(); XmlNode xmlNodeStatus = XMLServices.writeElement(dataObjectNode, "status", controlProperties, null, null); xmlNodeStatus.InnerText = dataObject.Status; //xmlNodeStatus.AppendChild(status); //Save User Pattern UserPatterns userPattern = workflowNode.UserPatterns; //controlProperties.Clear(); XmlNode xmluserpatternsnode = userPattern.Searialize(xmlNode.OwnerDocument); xmlNode.AppendChild(xmluserpatternsnode); //Save Data status section //controlProperties.Clear(); //XMLServices.writeElement(userPatternNode, "role", controlProperties, null); } }
private List <IWorkflowNode> GetWorkflowNodesForHtml() { var nodeTree = new WorkflowNode(); foreach (var node in FlowNodes) { var workflowNode = GetWorkflowNodeFrom(node); if (workflowNode != null) { nodeTree.Add(workflowNode); } } return(nodeTree.NextNodes); }
public ActionResult WebPageView(string instanceID) { WorkflowInstance workflowInstance = WorkflowInstance.GetInstance(instanceID); WorkflowNode current = workflowInstance.Current; Stack <Smartflow.Elements.Form> stack = new Stack <Smartflow.Elements.Form>(); if (current.WebView != null) { stack.Push(current.WebView); } ViewBag.InstanceID = instanceID; ViewBag.Stack = stack; ViewBag.Transitions = current.Transitions; return(View()); }
public ActionResult WorkflowImage(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); string data = Newtonsoft.Json.JsonConvert.SerializeObject(new { structure = GetImageList(instance.Resource), id = instance.Current.ID }, new Newtonsoft.Json.JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, ContractResolver = new LowerCaseContractResolver() }); ViewBag.Result = data; DataTable dt = WorkflowNode.GetRecord(instanceID); ViewBag.Record = Newtonsoft.Json.JsonConvert.SerializeObject(dt); return(View()); }
private IWorkflowNode WorkflowNodeFrom(IDev2Activity activity) { if (activity != null && !IsDsfComment(activity)) { var workflowNode = new WorkflowNode { ActivityID = activity.ActivityId, UniqueID = Guid.Parse(activity.UniqueID), StepDescription = activity.GetDisplayName(), }; if (!_workflowNodes.Any(o => o.UniqueID == workflowNode.UniqueID)) { _workflowNodes.Add(workflowNode); } return(workflowNode); } return(null); }
private IWorkflowNode WorkflowNodeFrom(IDev2Activity activity) { if (activity != null && !IsDsfComment(activity)) { var workflowNode = new WorkflowNode { ActivityID = activity.ActivityId != Guid.Empty ? activity.ActivityId : Guid.Parse(activity.UniqueID), UniqueID = Guid.Parse(activity.UniqueID), StepDescription = activity.GetDisplayName(), ChildNodes = activity.GetChildrenNodes() .Select(o => WorkflowNodeFrom(o)) .ToList() }; if (!_workflowNodes.Any(o => o.UniqueID == workflowNode.UniqueID)) { _workflowNodes.Add(workflowNode); } return(workflowNode); } return(null); }
protected static object stepsGrid_OnExternalDataBound(object sender, string sourceName, object parameter) { WorkflowStepTypeEnum stepType = WorkflowStepTypeEnum.Undefined; GridViewRow container = null; switch (sourceName.ToLowerCSafe()) { case "allowaction": container = (GridViewRow)parameter; stepType = (WorkflowStepTypeEnum)ValidationHelper.GetInteger(DataHelper.GetDataRowViewValue((DataRowView)container.DataItem, "StepType"), 3); switch (stepType) { case WorkflowStepTypeEnum.DocumentEdit: case WorkflowStepTypeEnum.DocumentPublished: case WorkflowStepTypeEnum.DocumentArchived: ((Control)sender).Visible = false; break; } break; case "steptype": stepType = (WorkflowStepTypeEnum)ValidationHelper.GetInteger(parameter, 3); WorkflowNode node = WorkflowNode.GetInstance(stepType); return(HTMLHelper.HTMLEncode(node.Name)); case "#objectmenu": container = (GridViewRow)parameter; WorkflowStepInfo step = new WorkflowStepInfo(((DataRowView)container.DataItem).Row); if (step.StepIsDefault) { ImageButton button = ((ImageButton)sender); button.Visible = false; } break; } return(parameter); }
public async Task <IActionResult> ExecuteTransition(string id, [FromBody] WorkflowTransitionExecutionRequest requestArgs) { return(await FunctionWrapper.ExecuteFunction(this, async() => { // This method assumes that a client has recognized the need to display screens // in order to populate all required fields or make any field updates to the item in transition if (string.IsNullOrEmpty(requestArgs.ItemId)) { throw new Exception("Required fields not supplied."); } Item item = null; string serializedObject = ""; item = await _itemRepository.Get(new ObjectId(requestArgs.ItemId), null); if (item == null) { throw new Exception("Cannot find item specified."); } //TODO: Verify that the transition is valid for the item's current state/node serializedObject = JsonConvert.SerializeObject(item); var transition = await _workflowTransitionRepository.Get(new ObjectId(id)); if (transition == null) { throw new Exception("Cannot find transition."); } FunctionRegistry functionRegistry = new FunctionRegistry( _itemRepository, _itemTypeRepository, _fieldRepository, _workflowNodeRepository); WorkflowTransitionExecutionResult result = new WorkflowTransitionExecutionResult(); if (transition.PreConditions != null) { // Execute all pre-conditions for the transition foreach (WorkflowTransitionFunction funcRef in transition.PreConditions) { var execResult = await functionRegistry.ExecuteFunction(funcRef, item); if (execResult.IsFailure) { result.ErrorMessages.Add(execResult.DisplayMessage); } } } // Stop now if any conditions fail if (result.ErrorMessages.Count > 0) { return result; } if (transition.Validations != null) { // Execute all validations for the transition foreach (WorkflowTransitionFunction funcRef in transition.Validations) { var execResult = await functionRegistry.ExecuteFunction(funcRef, item); if (execResult.IsFailure) { result.ErrorMessages.Add(execResult.DisplayMessage); } } } // Stop now if any validations fail if (result.ErrorMessages.Count > 0) { return result; } if (transition.PostFunctions != null) { foreach (WorkflowTransitionFunction funcRef in transition.PostFunctions) { var execResult = await functionRegistry.ExecuteFunction(funcRef, item); if (execResult.IsFailure) { throw new ApplicationException(execResult.DisplayMessage); } } } // Set Item Workflow Node / Status (should this be optional to avoid having // transitions that simply return to the same status just to execute functions?) WorkflowNode node = await _workflowNodeRepository.Get(transition.ToNodeId); if (node == null) { throw new Exception("Cannot find destination node."); } item.WorkflowNodeId = node.Id; await _itemRepository.Update(item); if (result.ErrorMessages.Count > 0) { return result; } return result; })); }
protected virtual void BuildWorkflow(IEnumerable <WorkflowNode> allNodes, DefinitionSourceV1 source, IEnumerable <AbpWorkflowStepBody> stepBodys, WorkflowNode node) { if (source.Steps.Any(u => u.Id == node.Key)) { return; } var stepSource = new StepSourceV1(); stepSource.Id = node.Key; stepSource.Name = node.Key; AbpWorkflowStepBody stepbody = stepBodys.FirstOrDefault(u => u.Name == node.StepBody.Name); if (stepbody == null) { stepbody = new AbpWorkflowStepBody() { StepBodyType = typeof(NullStepBody) }; } stepSource.StepType = $"{stepbody.StepBodyType.FullName}, {stepbody.StepBodyType.Assembly.FullName}"; foreach (var input in stepbody.Inputs) { var value = node.StepBody.Inputs[input.Key].Value; if (!(value is IDictionary <string, object> || value is IDictionary <object, object>)) { value = $"\"{value}\""; } stepSource.Inputs.TryAdd(input.Key, value); } source.Steps.Add(stepSource); BuildBranching(allNodes, source, stepSource, stepBodys, node.NextNodes); }
/// <summary> /// Loads data of edited workflow from DB into TextBoxes. /// </summary> protected void LoadData(WorkflowStepInfo wsi) { // Don't display settings for archived, edit and action step plcReject.Visible = !wsi.StepIsArchived && !wsi.StepIsEdit && !wsi.StepIsStart && !wsi.StepIsAction; // Change reject label if (CurrentWorkflow.IsAutomation) { lblAllowReject.ResourceString = "WorkflowStep.AllowMoveToPrevious"; lblAllowReject.RefreshText(); } // Display settings for Standard, DocumentEdit and Start step type only plcPublish.Visible = !CurrentWorkflow.IsAutomation && ((wsi.StepType == WorkflowStepTypeEnum.Standard) || wsi.StepIsEdit || wsi.StepIsStart || (wsi.StepType == WorkflowStepTypeEnum.Wait)); // Timeout UI is always enabled for wait step type ucTimeout.AllowNoTimeout = (wsi.StepType != WorkflowStepTypeEnum.Wait); // Display action parameters form only for action step type if (wsi.StepIsAction) { WorkflowActionInfo action = WorkflowActionInfoProvider.GetWorkflowActionInfo(wsi.StepActionID); if (action != null) { if (!RequestHelper.IsPostBack()) { pnlContainer.CssClass += " " + action.ActionName.ToLowerCSafe(); } ucActionParameters.FormInfo = new FormInfo(action.ActionParameters); } ucActionParameters.BasicForm.AllowMacroEditing = true; ucActionParameters.BasicForm.ResolverName = WorkflowHelper.GetResolverName(CurrentWorkflow); ucActionParameters.Parameters = wsi.StepActionParameters; ucActionParameters.ReloadData(!RequestHelper.IsPostBack()); ucActionParameters.Visible = ucActionParameters.CheckVisibility(); pnlParameters.GroupingText = string.Format(GetString("workflowstep.parameters"), HTMLHelper.HTMLEncode(ResHelper.LocalizeString(action.ActionDisplayName))); } pnlParameters.Visible = ucActionParameters.Visible; if (plcTimeoutTarget.Visible) { ucTimeoutTarget.WorkflowStepID = WorkflowStepID; } // Initialize condition edit for certain step types ucSourcePointEdit.StopProcessing = true; if (!CurrentWorkflow.IsBasic) { plcStepType.Visible = true; WorkflowNode node = WorkflowNode.GetInstance(wsi.StepType); lblWorkflowStepTypeValue.Text = node.Name; bool conditionStep = (wsi.StepType == WorkflowStepTypeEnum.Condition); if (conditionStep || (wsi.StepType == WorkflowStepTypeEnum.Wait) || (!wsi.StepIsStart && !wsi.StepIsAction && !wsi.StepIsFinished && (wsi.StepType != WorkflowStepTypeEnum.MultichoiceFirstWin))) { // Initialize source point edit control ucSourcePointEdit.WorkflowStepId = WorkflowStepID; var sourcePoint = CurrentStepInfo.StepDefinition.DefinitionPoint; if (sourcePoint != null) { pnlCondition.Visible = true; pnlCondition.GroupingText = conditionStep ? GetString("workflowstep.conditionsettings") : GetString("workflowstep.advancedsettings"); ucSourcePointEdit.StopProcessing = false; ucSourcePointEdit.SourcePointGuid = sourcePoint.Guid; ucSourcePointEdit.SimpleMode = !conditionStep; ucSourcePointEdit.ShowCondition = (wsi.StepType != WorkflowStepTypeEnum.Userchoice) && (wsi.StepType != WorkflowStepTypeEnum.Multichoice) && (wsi.StepType != WorkflowStepTypeEnum.MultichoiceFirstWin); ucSourcePointEdit.RuleCategoryNames = CurrentWorkflow.IsAutomation ? ModuleEntry.ONLINEMARKETING : WorkflowObjectType.WORKFLOW; } } } if (!RequestHelper.IsPostBack()) { if (ShowTimeout) { ucTimeout.TimeoutEnabled = wsi.StepDefinition.TimeoutEnabled; ucTimeout.ScheduleInterval = wsi.StepDefinition.TimeoutInterval; } txtWorkflowStepCodeName.Text = wsi.StepName; txtWorkflowStepDisplayName.Text = wsi.StepDisplayName; chkAllowReject.Checked = wsi.StepAllowReject; chkAllowPublish.Checked = wsi.StepAllowPublish; } }
private static bool isCondition(WorkflowNode node) { return(node is Condition); }
private void CalculateFlowDecisionNodes(List <IWorkflowNode> list, List <IWorkflowNode> childNodes, FlowNode node, out IDev2Activity activity, out List <IWorkflowNode> nodes) { var flowDecision = ((FlowDecision)node); nodes = GetFlowStepFromFlowNode(flowDecision.False); if (nodes.Count > 0) { childNodes.AddRange(nodes); } else { var falseA = (((FlowStep)flowDecision.False)?.Action as IDev2Activity); if (falseA.GetType().Name is "DsfCommentActivity") { //Do nothing. DsfCommentActivity should not be part of coverage } else { var falseArm = new WorkflowNode { ActivityID = falseA.ActivityId, UniqueID = Guid.Parse(falseA.UniqueID), StepDescription = falseA.GetDisplayName(), }; childNodes.Add(falseArm); } } nodes = GetFlowStepFromFlowNode(flowDecision.True); if (nodes.Count > 0) { childNodes.AddRange(nodes); } else { var trueA = ((FlowStep)flowDecision.True)?.Action as IDev2Activity; if (trueA.GetType().Name is "DsfCommentActivity") { //Do nothing. DsfCommentActivity should not be part of coverage } else { var trueArm = new WorkflowNode { ActivityID = trueA.ActivityId, UniqueID = Guid.Parse(trueA.UniqueID), StepDescription = trueA.GetDisplayName(), }; childNodes.Add(trueArm); } } activity = flowDecision.Condition as IDev2Activity; list.Add(new WorkflowNode { ActivityID = activity.ActivityId, UniqueID = Guid.Parse(activity.UniqueID), StepDescription = activity.GetDisplayName(), NextNodes = childNodes }); }