public JsonResult GetFormData(int? workFlowID) { ActivityInput input = new ActivityInput(); input.WorkflowID = 1; var result = service.Invoke(input); FuzeFormEngineModel model = new FuzeFormEngineModel(); model.WorkFlowID = result.WorkflowID; model.WorkflowInstanceID = result.WorkflowInstanceID; model.FormName = result.Results["ViewName"].ToString(); model.Model = new { Input1 = "", Input2 = "", Result = "" }; return Json(model, JsonRequestBehavior.AllowGet); }
public ActivityResult ProcessWorkFlow(FuzeActivity container, FuzeActivity currentActivity, ActivityInput input) { Contracts.ActivityResult activityResult = null; container.CurrentActivityID = currentActivity.ActivityID; // map all input to the activity for activity execution. SetInputMappingsFromWorkFlow(container, currentActivity); // execute the workflow currentActivity.Execute(); // map if the item has any output mappings. SetOutputMappingsToWorkFlow(container, currentActivity); // check the activity type if (currentActivity.ActivityType == "FORM") { // map all output to the activity result. activityResult = new ActivityResult(); activityResult.Results = new Dictionary<string, object>(); // activityResult.Results.Add("FormResult", currentActivity.GetType().GetProperty("ActivityResult").GetValue(currentActivity, null)); MapOutPutMappingToActivityResult(container, currentActivity, activityResult); activityResult.ValidationResults = currentActivity.ValidationErros.ToDictionary(c => c.ValidationKey, x => x.ValidationResult); // check for persistance PersistActivity(container, input); activityResult.WorkflowInstanceID = input.WorkflowInstanceID; if (currentActivity.OutComes == null || currentActivity.OutComes.Count() == 0) { RemoveActivityInstance(input.WorkflowInstanceID); } return activityResult; } else if (currentActivity.ActivityType == "CUSTOM") { if (currentActivity.OutComes == null || currentActivity.OutComes.Count() == 0) { RemoveActivityInstance(input.WorkflowInstanceID); return activityResult; } container.NextActivityID = currentActivity.OutComes.First().Activity.ActivityID; return ProcessWorkFlow(container, currentActivity.OutComes.First().Activity, input); } return activityResult; }
public JsonResult Index(int? workflowID, Guid? workflowInstanceID) { Stream req = Request.InputStream; req.Seek(0, System.IO.SeekOrigin.Begin); string json = new StreamReader(req).ReadToEnd(); ActivityInput input = new ActivityInput(); input.WorkflowID = workflowID.Value; input.WorkflowInstanceID = workflowInstanceID.Value; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string, object> inputObj = (Dictionary<string, object>)serializer.DeserializeObject(json); input.Inputs = inputObj; var result = service.Resume(input); FuzeFormEngineModel model = new FuzeFormEngineModel(); model.WorkFlowID = workflowID.Value; model.WorkflowInstanceID = workflowInstanceID.Value; //model.FormName = result.Results["ViewName"].ToString(); model.Model = result.Results; //input.Inputs; return Json(model, JsonRequestBehavior.AllowGet); }
private void PersistActivity(FuzeActivity container, ActivityInput input) { bool isUpdate = false; if (input.WorkflowInstanceID == Guid.Empty) { input.WorkflowInstanceID = Guid.NewGuid(); } else { isUpdate = true; } StringBuilder instanceXaml = new StringBuilder(); using (StringWriter writer = new StringWriter(instanceXaml)) { XamlServices.Save(writer, container); } var workflowInstance = new FuzeWorkflowInstance() { WorkflowInstanceID = input.WorkflowInstanceID, WorkFlow = instanceXaml.ToString() }; if (isUpdate) { RemoveActivityInstance(workflowInstance.WorkflowInstanceID); } dbContext.FuzeWorkflowInstances.Add(workflowInstance); dbContext.SaveChanges(); }