private static List<Node> GetActivityNodes(String connectionString, IEnumerable<Process> processess, DBVersion version, bool getInstances) { var db = new Data1.CloudCoreDB(connectionString); var nodes = from a in db.Cloudcoremodel_ActivityModel join t in db.Cloudcoremodel_SubProcess on a.SubProcessId equals t.SubProcessId join pr in db.Cloudcoremodel_ProcessRevision on t.ProcessRevisionId equals pr.ProcessRevisionId join at in db.Cloudcoremodel_ActivityType on a.ActivityTypeId equals at.ActivityTypeId where processess.Select(r => new { r.Id, Revision = r.RevisionId }).Contains(new { Id = pr.ProcessModelId, Revision = pr.ProcessRevisionId }) || pr.ProcessModelId == 0 select new Node { ID = a.ActivityModelId, Title = a.ActivityName, GroupID = t.SubProcessId, GroupTitle = t.SubProcessName, Startable = a.Startable, ActivityType = at.ActivityTypeName, Instances = -1 //Instances = getInstances ? // (from wl in db.BTWorklist // where a.ActivityModelId == wl.ActivityID // select a.ActivityModelId).Count() // : -1 }; return nodes.ToList(); }
public static List<Revision> GetRevisions(DrawItem drawItem) { var db = new Data1.CloudCoreDB(drawItem.ConnectionString); var revisions = from pv in db.Cloudcoremodel_ProcessRevision select new Revision { ID = pv.ProcessRevisionId, Name = pv.ProcessRevision.ToString(), ProcessID = pv.ProcessModelId, Date = String.Format("{0:dd MMMM yyyy}", pv.Changed), User = pv.UserId.ToString() }; return revisions.ToList(); }
public static List<Process> GetProcesses(DrawItem drawItem) { var db = new Data1.CloudCoreDB(drawItem.ConnectionString); var processes = from pm in db.Cloudcoremodel_ProcessModel where pm.ProcessModelId != 0 select new Process(drawItem) { Id = pm.ProcessModelId, Title = pm.ProcessName }; return processes.ToList(); }
public void CreateAvailableRevisions() { var processRevisions = new List<ProcessRevisions>(); var db = new Data1.CloudCoreDB(DrawItem.ConnectionString); foreach (var process in DrawItem.Process) { var revisions = (from pr in db.Cloudcoremodel_ProcessRevision join u in db.Cloudcore_User on pr.UserId equals u.UserId orderby pr.ProcessRevision descending where pr.ProcessModelId == process.Id select new Revision { Name = "Revision " + pr.ProcessRevision.ToString(), ID = pr.ProcessRevisionId, User = u.NFullname, Date = String.Format("{1}: {0:dd MMMM yyyy}", pr.Changed, "Created"), ProcessID = pr.ProcessModelId }).ToList(); var latest = (from r in revisions select new Revision { Name = "Latest", ID = r.ID, User = r.User, Date = r.Date, ProcessID = r.ProcessID }).First(); revisions.Insert(1, latest); //Delete duplicate entry revisions.Remove(revisions.First()); processRevisions.Add(new ProcessRevisions(DrawItem) { ProcessName = process.Title, ProcessID = process.Id, Revisions = revisions }); } _availableRevisions = processRevisions; }
private static List<Connector> GetActivityConnectors(string connectionString, IEnumerable<Process> processes, DBVersion version) { var db = new Data1.CloudCoreDB(connectionString); var connectors = (from f in db.Cloudcoremodel_FlowModel join fa in db.Cloudcore_Activity on f.FromActivityModelId equals fa.ActivityModelId join t in db.Cloudcoremodel_SubProcess on fa.SubProcessGuid equals t.SubProcessGuid where processes.Select(r => r.Id).Contains(t.ProcessRevisionId) select new Connector { Title = f.Outcome, FromID = f.FromActivityModelId, ToID = f.ToActivityModelId, FlowInd = 0 }).Distinct(); return connectors.ToList(); }
private void GenerateConnectors(string connectionString) { var db = new Data1.CloudCoreDB(connectionString); var connectors = (from f in db.Cloudcoremodel_FlowModel join fa in db.Cloudcoremodel_ActivityModel on f.FromActivityModelId equals fa.ActivityModelId join t in db.Cloudcoremodel_SubProcess on fa.SubProcessId equals t.SubProcessId join p in db.Cloudcoremodel_ProcessRevision on t.ProcessRevisionId equals p.ProcessRevisionId where RevisionId == p.ProcessRevisionId select new { Title = f.Outcome == "-" ? String.Empty : f.Outcome, FromId = f.FromActivityModelId, ToId = f.ToActivityModelId, OptimalFlow = f.OptimalFlow, NegativeFlow = f.NegativeFlow, HasTrigger = (bool)db.Cloudcore_FlowHasTrigger(f.FlowGuid) }).Distinct(); foreach (var connector in connectors) { var con = new Connector() { Title = connector.Title, FromActivityId = connector.FromId, ToActivityId = connector.ToId }; if (connector.OptimalFlow) { con.AddProperty(ConnectorProperties.Optimal); } if (connector.NegativeFlow) { con.AddProperty(ConnectorProperties.Negative); } if (connector.HasTrigger) { con.AddProperty(ConnectorProperties.Trigger); } Connectors.Add(con); } }
private static List<Connector> GetSubProcessConnectors(string connectionString, IEnumerable<Process> processes, DBVersion version) { var db = new Data1.CloudCoreDB(connectionString); var connectors = (from f in db.Cloudcoremodel_FlowModel join fa in db.Cloudcore_Activity on f.FromActivityModelId equals fa.ActivityModelId join ta in db.Cloudcore_Activity on f.ToActivityModelId equals ta.ActivityModelId join fsub in db.Cloudcoremodel_SubProcess on fa.SubProcessGuid equals fsub.SubProcessGuid join tsub in db.Cloudcoremodel_SubProcess on ta.SubProcessGuid equals tsub.SubProcessGuid where fa.SubProcessGuid != ta.SubProcessGuid && processes.Select(r => r.Id).Contains(fsub.SubProcessId) select new Connector { FromID = fsub.SubProcessId, ToID = tsub.SubProcessId, Title = "", FlowInd = 0 }).Distinct(); return connectors.ToList(); }
private static List<Node> GetTaskNodes(String connectionString, IEnumerable<Process> processess, DBVersion version, bool getInstances) { var db = new Data1.CloudCoreDB(connectionString); var nodes = from t in db.Cloudcoremodel_ActivityModel join tsub in db.Cloudcoremodel_SubProcess on t.SubProcessId equals tsub.SubProcessId join pr in db.Cloudcoremodel_ProcessRevision on t.ProcessRevisionId equals pr.ProcessRevisionId join p in db.Cloudcoremodel_ProcessModel on pr.ProcessModelId equals p.ProcessModelId where processess.Select(r => new { r.Id, Revision = r.RevisionId }).Contains(new { Id = p.ProcessModelId, Revision = pr.ProcessRevisionId }) || pr.ProcessModelId == 0 orderby t.SubProcessId select new Node { ID = t.SubProcessId, Title = tsub.SubProcessName, GroupTitle = p.ProcessName, GroupID = pr.ProcessModelId, Startable = (from fm in db.Cloudcoremodel_FlowModel join fa in db.Cloudcoremodel_ActivityModel on fm.FromActivityModelId equals fa.ActivityModelId where fa.Startable select fa.SubProcessId).Contains(t.SubProcessId), Decision = (from f in db.Cloudcoremodel_FlowModel join fa in db.Cloudcoremodel_ActivityModel on f.FromActivityModelId equals fa.ActivityModelId join ta in db.Cloudcoremodel_ActivityModel on f.ToActivityModelId equals ta.ActivityModelId where fa.SubProcessId != ta.SubProcessId && fa.SubProcessId == t.SubProcessId select ta.ActivityModelId).Distinct().Count() > 1, Instances = -1 //Instances = getInstances ? // (from wl in db.BTWorklist // join a in db.BTActivity on wl.ActivityID equals a.ActivityID // where a.TaskID == t.TaskModelId // select a.ActivityID).Count() // : -1 }; return nodes.ToList(); }
private void GenerateActivities(string connectionString) { var db = new Data1.CloudCoreDB(connectionString); var activities = from am in db.Cloudcoremodel_ActivityModel join sub in db.Cloudcoremodel_SubProcess on am.SubProcessId equals sub.SubProcessId join pr in db.Cloudcoremodel_ProcessRevision on am.ProcessRevisionId equals pr.ProcessRevisionId where pr.ProcessRevisionId == Id || pr.ProcessModelId == 0 select new { Id = am.ActivityModelId, Title = am.ActivityName, SubProcessId = sub.SubProcessId, SubProcessName = sub.SubProcessName, Startable = am.Startable, ActivityTypeId = am.ActivityTypeId, Decision = (from f in db.Cloudcoremodel_FlowModel where f.FromActivityModelId == am.ActivityModelId select am.ActivityModelId).Count() > 1 }; foreach (var activity in activities) { var subProcess = SubProcesses.Where(r => r.Id == activity.SubProcessId).SingleOrDefault(); if (subProcess == null) { subProcess = new SubProcess() { Id = activity.SubProcessId, Parent = this, Title = activity.SubProcessName }; SubProcesses.Add(subProcess); } IActivity act; switch (activity.ActivityTypeId) { case 0: act = new CloudCore_User_Activity(); break; case 1: act = new Custom_User_Activity(); break; case 2: act = new Database_Custom_Activity(); break; case 3: act = new Database_Parked_Activity(); break; case 4: act = new Flow_Rule(); break; case 5: act = new Cloud_Custom_Activity(); break; case 6: act = new Database_Costing(); break; case 7: act = new Cloud_Costing(); break; case 8: act = new Database_Batch_Start(); break; case 9: act = new Cloud_Batch_Start(); break; case 10: act = new Cloud_Batch_Wait(); break; case 11: act = new Cloud_Parked_Activity(); break; case 12: act = new SMS_Activity(); break; case 13: act = new Email_Activity(); break; case 14: act = new Corticon_Business_Rule(); break; case 99: act = new StopActivity(); break; default: act = new CloudCore_User_Activity(); break; } act.Title = activity.Title; act.Id = activity.Id; act.Parent = subProcess; if (activity.Startable) act.AddProperty(ActivityProperties.Startable); subProcess.Activities.Add(act); } }