public ActionResult StartForm(Guid processDefinitionId) { IExecutionApplication executionApplication = null; IProcessDefinitionApplication definitionApplication = null; executionApplication = ServiceLocator.Current.GetInstance <IExecutionApplication>(); definitionApplication = ServiceLocator.Current.GetInstance <IProcessDefinitionApplication>(); IProcessDefinition processDefinition = definitionApplication.GetProcessDefinition(processDefinitionId); //create Form ActivityFormView activityForm = executionApplication.GetStartForm(processDefinitionId); return(View(processDefinition.Name.Replace(" ", ""), activityForm)); }
public ActivityFormView GetActivityForm(Guid flowId) { ActivityFormView activityForm = null; using (var scope = new UnitOfWorkScope()) { try { var flowRepository = ServiceLocator.Current.GetInstance <IRepository <Flow> >(); Flow flow = flowRepository.With(w => w.Node).Get(flowId); State state = flow.Node as State; var fieldRepository = ServiceLocator.Current.GetInstance <IRepository <Field> >(); var fields = fieldRepository.With(w => w.Attribute).Query(new Specification <Field>(q => q.State.Id == state.Id)); var attributeValues = new Dictionary <string, object>(); var attributeInstanceRepository = ServiceLocator.Current.GetInstance <IRepository <AttributeInstance> >(); foreach (var field in fields) { var attribute = field.Attribute; string attributeName = attribute.Name; if ((field.Access.IsReadable() || field.Access.IsWritable())) { AttributeInstance attributeInstance = attributeInstanceRepository.SingleOrDefault(s => s.Scope.Id == flowId && s.AttributeName == attributeName); if (attributeInstance != null) { attributeValues.Add(attributeName, attributeInstance.GetValue()); } } } activityForm = new ActivityFormView(); activityForm.FlowId = flowId; activityForm.AttributeValues = attributeValues; return(activityForm); } catch { throw; } } }
public ActivityFormView GetStartForm(Guid processDefinitionId) { ActivityFormView activityForm = null; using (var scope = new UnitOfWorkScope()) { try { var processDefinitionRepository = ServiceLocator.Current.GetInstance <IRepository <ProcessDefinition> >(); ProcessDefinition processDefinition = processDefinitionRepository.With(w => w.Nodes).With(w => w.Attributes).Get(processDefinitionId); var fieldRepository = ServiceLocator.Current.GetInstance <IRepository <Field> >(); var fields = fieldRepository.With(w => w.Attribute).Query(new Specification <Field>(q => q.State.Id == processDefinition.StartStateId)); var attributeValues = new Dictionary <string, object>(); foreach (var field in fields) { var attribute = field.Attribute; string attributeName = attribute.Name; string initialValue = attribute.InitialValue; if (!string.IsNullOrEmpty(initialValue) && (field.Access.IsReadable() || field.Access.IsWritable())) { AttributeInstance attributeInstance = new AttributeInstance(attribute, null); attributeInstance.ValueText = initialValue; attributeValues.Add(attributeName, attributeInstance.GetValue()); } } activityForm = new ActivityFormView(); activityForm.ProcessDefinitionId = processDefinition.Id; activityForm.AttributeValues = attributeValues; return(activityForm); } catch { throw; } } }
public ActionResult SubmitForm(ActivityFormView model) { IExecutionApplication executionApplication = null; executionApplication = ServiceLocator.Current.GetInstance <IExecutionApplication>(); var userId = Guid.Parse(this.User.Identity.Name); if (model.Parameters != null) { model.AttributeValues = new Dictionary <string, object>(); foreach (var item in model.Parameters) { Evaluation evaluation; if (Evaluation.TryParseEvaluation(item.Value, out evaluation)) { model.AttributeValues.Add(item.Key, evaluation); continue; } DateTime selectDateTime; if (DateTime.TryParse(item.Value, out selectDateTime)) { model.AttributeValues.Add(item.Key, selectDateTime); continue; } model.AttributeValues.Add(item.Key, item.Value); } } if (model.ProcessDefinitionId != null) { executionApplication.StartProcessInstance(userId, model.ProcessDefinitionId.Value, model.AttributeValues); } if (model.FlowId != null) { executionApplication.PerformActivity(userId, model.FlowId.Value, model.AttributeValues); } return(this.Redirect("/User")); }