public WorkflowDefinition(IEnumerable <DesignerItemViewModelBase> items, IEnumerable <ConnectorViewModel> connectors, ActivityItemViewModel startActivity) { var activities = new List <ActivityDefinition>(); foreach (var i in items) { var activityDefinition = new ActivityDefinition(); var activityInfo = i as ActivityItemViewModel; activityDefinition.Id = i.Id; if (activityInfo != null) { activityDefinition.Name = activityInfo.ActivityName; activityDefinition.Guard = activityInfo.SelectedActivityGuardType.ToString(); activityDefinition.Settings = activityInfo.Settings.Select(s => new Setting() { Name = s.Key, Value = s.Value }).ToArray(); } else { activityDefinition.Name = "UnknownActivity_" + i.Id; } activities.Add(activityDefinition); } Activities = activities.ToArray(); var transitions = connectors.Select(c => new TransitionDefinition() { Id = c.Id, ConditionText = c.ConditionText ?? "true", SourceActivityId = IdMod(c.SourceConnectorInfo.DataItem), TargetActivityId = IdMod((c.SinkConnectorInfo as FullyCreatedConnectorInfo)?.DataItem) }).ToList(); if (startActivity != null) { var startTransition = new TransitionDefinition() { ConditionText = "true", SourceActivityId = -1, TargetActivityId = startActivity.Id }; long maxId = 0; if (transitions != null && transitions.Count > 0) { maxId = transitions.Max(t => t.Id); } startTransition.Id = maxId + 1; transitions.Add(startTransition); } Transitions = transitions.ToArray(); Settings = new Setting[] { new Setting() { Name = "statemachinetype", Value = "SomeStateMachineTypeClass" } }; Name = "Registered Workflow 66"; }
public Transition(TransitionDefinition definition) : base(definition) { }