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; } } }