// проверка активности public void checkActivity(ActivityNode activity, ADNodesList.ADNode node) { if (activity.getName().Length == 0) { ADMistakeFactory.createMistake(Level.HARD, MistakeAdapter.toString(MISTAKES.NO_NAME), node, ALL_MISTAKES.NO_NAME); } else { // проверка на уникальность имени if (activityNames.Contains(activity.getName().ToLower())) { ADMistakeFactory.createMistake(MistakesSeriousness.mistakes[MISTAKES.REPEATED_NAME], MistakeAdapter.toString(MISTAKES.REPEATED_NAME), diagramElements.getNode(activity.getId()), ALL_MISTAKES.REPEATED_NAME); return; } else { activityNames.Add(activity.getName().ToLower()); } // проверка на заглавную букву if ((!activity.getName().Substring(0, 1).ToUpper().Equals(activity.getName().Substring(0, 1)))) { ADMistakeFactory.createMistake(Level.HARD, MistakeAdapter.toString(MISTAKES.SMALL_LETTER), node, ALL_MISTAKES.SMALL_LETTER); } // получаем первое слово существительного и проверяем, что оно не заканчивается на ь или т string firstWord = activity.getName().Split(' ')[0]; //Console.WriteLine(firstWord); if (firstWord.EndsWith("те") || firstWord.EndsWith("чи") || firstWord.EndsWith("ти") || firstWord.EndsWith("ть") || firstWord.EndsWith("чь") || firstWord.EndsWith("т")) { ADMistakeFactory.createMistake(Level.EASY, MistakeAdapter.toString(MISTAKES.NOT_NOUN), node, ALL_MISTAKES.NOT_NOUN); } } }
private async Task <List <Person> > GetPeopleAsync(ActivityNode node) { var people = new List <Person>(); var activityPeopleIds = await _activityPeopleRepo.GetAll() .Where(ap => ap.activity_id == node.Id) .Select(ap => ap.person_id) .ToListAsync(); foreach (var personId in activityPeopleIds) { var uri = $"http://interview.homex.io/api/people/{personId}"; var response = await _client.GetAsync(uri); if (!response.IsSuccessStatusCode) { continue; } var person = await response.Content.ReadAsAsync <Person>(); people.Add(person); } return(people); }
private async Task <List <ActivityNode> > GetChildNodesAsync(ActivityNode node) { var children = await _activitiesRepo.GetAll() .Where(activity => activity.parent_activity_id == node.Id) .ToListAsync(); if (!children.Any()) { return(new List <ActivityNode>()); } foreach (var child in children) { var root = new ActivityNode { Id = child.id, Name = child.name, ParentActivityId = child.parent_activity_id, Children = new List <ActivityNode>(), People = new List <Person>() }; node.Children.Add(root); } foreach (var child in node.Children) { child.Children = await GetChildNodesAsync(child); child.People = await GetPeopleAsync(child); } return(node.Children); }
public async Task <IHttpActionResult> Get() { var nodes = new List <ActivityNode>(); var rootNodes = await _activitiesRepo.GetAll() .Where(activity => !activity.parent_activity_id.HasValue) .ToListAsync(); if (!rootNodes.Any()) { return(BadRequest("No root found")); } foreach (var rootNode in rootNodes) { var root = new ActivityNode { Id = rootNode.id, Name = rootNode.name, ParentActivityId = null, Children = new List <ActivityNode>(), People = new List <Person>() }; nodes.Add(root); } foreach (var node in nodes) { node.Children = await GetChildNodesAsync(node); } return(Ok(nodes)); }
private void InitializeData(ActivityNode controller) { foreach (var pat in controller.Users.Values.OfType <Patient>()) { Patients.Add(pat); } }
private async void DeleteActivity(ActivityNode activityNode) { try { IsBusy = true; var aggregatedList = Activities.Merge(Roles, Users); var result = await authorisationManagerServiceManager.DeleteActivity(activityNode, aggregatedList); SelectedItem = null; ResetStatus(); } catch (Exception ex) { ShowMessage(new Message() { MessageType = MessageType.Error, Text = ex.Message }, true); IsBusy = false; } finally { OnPropertyChanged(""); } }
public void EA_OnNotifyContextItemModified(EA.Repository Repository, String GUID, EA.ObjectType ot) { SQLRepository sqlRepository = new SQLRepository(Repository, false); if (ot == EA.ObjectType.otElement) { EA.Element eaElement2 = Repository.GetElementByGuid(GUID); SQLElement sqlElement = sqlRepository.GetElementByID(eaElement2.ElementID); if (sqlElement.Stereotype.ToLower() == SDMModelingMain.SdmContainerStereotype.ToLower()) { Activity activity = new Activity(sqlElement, sqlRepository); activity.saveTreeToEATaggedValue(true); } else if (sqlElement.MetaType == SDMModelingMain.ActivityNodeMetatype) { ActivityNode aNode = SDMUtil.createCorrectActivityNode(sqlRepository, sqlElement); if (aNode != null) { aNode.loadTreeFromTaggedValue(); aNode.Name = sqlElement.Name; aNode.saveTreeToEATaggedValue(true); } } } }
private void EstablishStresser(int stressIndex, GameObject activity, GameObject activityText) { ActivityNode node = gameManager.Activities[stressIndex]; activity.GetComponent <DayActivityButton>().MainStress = node.MainStress; activity.GetComponent <DayActivityButton>().SideStress = node.SideStress; activityText.GetComponent <Text>().text = node.FlavorText; }
private void checkActivity(ActivityNode activity, ADNodesList.ADNode node) { activityCount++; // активность имеет больше одного выходящего перехода if (activity.outSize() >= 2) { ADMistakeFactory.createMistake(MistakesSeriousness.mistakes[MISTAKES.MORE_THAN_ONE_OUT], MistakeAdapter.toString(MISTAKES.MORE_THAN_ONE_OUT), node, ALL_MISTAKES.MORE_THAN_ONE_OUT); } }
private void importActivityNode(SQLElement sdmContainer, MocaNode activityNodeNode) { EA.Element activityNodeElement = null; ActivityNode aNode = null; if (activityNodeNode.getAttributeOrCreate("type").Value == "start") { activityNodeElement = MainImport.getInstance().EcoreImport.getOrCreateElement(sdmContainer, activityNodeNode, Main.EAStateNodeType, Main.EAStartNodeSubtype); aNode = new StartNode(sqlRep, sqlRep.GetElementByID(activityNodeElement.ElementID)); } else if (activityNodeNode.getAttributeOrCreate("type").Value == "stop") { activityNodeElement = MainImport.getInstance().EcoreImport.getOrCreateElement(sdmContainer, activityNodeNode, Main.EAStateNodeType, Main.EAStopNodeSubtype); aNode = new StopNode(sqlRep, sqlRep.GetElementByID(activityNodeElement.ElementID)); } else if (activityNodeNode.getAttributeOrCreate("type").Value == "statement") { activityNodeElement = MainImport.getInstance().EcoreImport.getOrCreateElement(sdmContainer, activityNodeNode, Main.EAActivityType); aNode = new StatementNode(sqlRep, sqlRep.GetElementByID(activityNodeElement.ElementID)); } else if (activityNodeNode.getAttributeOrCreate("type").Value == "story") { activityNodeElement = MainImport.getInstance().EcoreImport.getOrCreateElement(sdmContainer, activityNodeNode, Main.EAActivityType); appendSdmDiagram(activityNodeElement.Name, activityNodeElement); aNode = new StoryNode(sqlRep, sqlRep.GetElementByID(activityNodeElement.ElementID)); } MocaNode outgoingEdgesNode = activityNodeNode.getChildNodeWithName(ActivityNode.OutgoingTransitionsNodeName); if (outgoingEdgesNode != null) { foreach (MocaNode outgoingEdgeNode in outgoingEdgesNode.Children) { MainImport.getInstance().ConnectorNodeToParent.Add(outgoingEdgeNode, activityNodeElement); } } MocaNode objectVariablesNode = activityNodeNode.getChildNodeWithName(StoryPattern.ObjectVariablesChildNodeName); if (objectVariablesNode != null) { foreach (MocaNode ovNode in objectVariablesNode.Children) { importObjectVariable(sqlRep.GetElementByID(activityNodeElement.ElementID), ovNode); } } aNode.deserializeFromMocaTree(activityNodeNode); MainImport.getInstance().ElementGuidToElement.Add(activityNodeElement.ElementGUID, activityNodeElement); MainImport.getInstance().OldGuidToNewGuid.Add(aNode.EaGuid, activityNodeElement.ElementGUID); MainImport.getInstance().MocaTaggableElements.Add(aNode); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { ////endpoints.MapGet("/", async context => ////{ //// context.Response.ContentType = "text/html"; //// await context.Response.WriteAsync("<a href='api/airline/10'>Test GET</a>"); ////}); endpoints.MapControllers(); }); applicationLifetime.ApplicationStopped.Register(async() => { await app.ApplicationServices.GetRequiredService <ICouchbaseLifetimeService>().CloseAsync() .ConfigureAwait(false); }); ActivityRequestTracer.Subscribe((activity, kvp) => { Console.WriteLine($"Couchbase.Activity::{kvp.Key} ({activity?.DisplayName})"); if (kvp.Key.EndsWith(".Stop") && activity != null) { // Keeping track of all the activities in memory for the TraceViewerController. // This is *not* something you would do in a real app, as it uses up memory indefinitely. ActivityNode.RecordStopActivity(activity); // filter out noisy events we don't care about. if (activity.OperationName.StartsWith("get_cluster_map") || activity.OperationName.StartsWith("Poll")) { return; } var ids = new Stack <string>(); var node = activity; while (node != null && ids.Count < 100) { ids.Push((node.Id ?? "NO_ID") + $"({node.OperationName})"); node = node.Parent; } var idPath = string.Join("->", ids); Console.WriteLine(idPath + ":" + JsonConvert.SerializeObject(ThresholdSummary.FromActivity(activity))); } }); }
private void InitializeEvents(ActivityNode controller) { controller.ActivityAdded += node_ActivityAdded; controller.ActivityChanged += node_ActivityChanged; controller.ActivityRemoved += node_ActivityRemoved; controller.DeviceAdded += node_DeviceAdded; controller.DeviceChanged += node_DeviceChanged; controller.DeviceRemoved += node_DeviceRemoved; controller.UserAdded += node_UserAdded; controller.UserChanged += node_UserChanged; controller.UserRemoved += node_UserRemoved; }
public static void AddActivityTemplate(Diagram diagram, ActivityNode newNode) { var main = GetMainView(diagram); var palette = main.FindName("mainPalette") as Palette; if (palette == null) return; palette.StartTransaction("AddNewNode"); palette.Model.AddNode(newNode); //var nodes = palette.NodesSource as ObservableCollection<ActivityNode>; //nodes.Add(newNode); palette.CommitTransaction("AddNewNode"); }
public ActivityNodeTabsForm(ActivityNode activityNode, SQLRepository repository) { InitializeComponent(); this.repository = repository; this.ActivityNode = activityNode; this.ActivityNode.loadTreeFromTaggedValue(); this.StartPosition = FormStartPosition.CenterScreen; this.activityNodePropertiesUserControl1.initializeUserControl(repository, this); this.ShowDialog(); }
public void UpdateActivityTemplate(string templateID, string activityKey) { if (this._mainPageVW.SelectedItem == null) { return; } var form = _mainPageVW.SelectedItem.Content as UserControl; if (form == null) { return; } var diagram = form.FindName("mainDiagram") as Northwoods.GoXam.Diagram; if (diagram == null) { return; } ActivityNode newNode = null; if (diagram.SelectedPart != null) { if (diagram.SelectedPart.Data != null) { newNode = diagram.SelectedPart.Data as ActivityNode; } } if (newNode == null) { DiagramPageViewModel datacontex = diagram.DataContext as DiagramPageViewModel; foreach (ActivityNode item in datacontex.DiagramModel.NodesSource) { if (string.Compare(item.Key, activityKey) == 0) { newNode = item; break; } } } newNode = newNode.WfClone(templateID); this.mainPalette.StartTransaction("AddNewNode"); this.mainPalette.Model.AddNode(newNode); this.mainPalette.CommitTransaction("AddNewNode"); this._mainPageVW.TemplateKeys.Add(templateID); }
public static int LatestFinishTime(ActivityNode node, IEnumerable <ActivityNode> dependents) { var any = false; var eft = int.MaxValue; foreach (var dependent in dependents) { eft = Math.Min(dependent.LatestStart, eft); any = true; } return(any ? eft : node.EarliestFinish); }
public void AddActivitySelfLink() { if (_mainPageVW.SelectedItem == null) { return; } var form = _mainPageVW.SelectedItem.Content as UserControl; if (form == null) { return; } var diagram = form.FindName("mainDiagram") as Northwoods.GoXam.Diagram; if (diagram == null) { return; } Node node = diagram.SelectedNode; if (node == null) { MessageBox.Show("请选择需要添加自连线节点!"); return; } ActivityNode nodeData = node.Data as ActivityNode; if (nodeData.Category == ActivityType.Completed.ToString()) { MessageBox.Show("结束点不能添加自连线!"); return; } var selfLinkNum = node.LinksConnected.Count(p => p.FromNode == p.ToNode); if (selfLinkNum >= 1) { MessageBox.Show("一个节点只能有一条自连线!"); return; } diagram.StartTransaction("addselflink"); var model = diagram.Model as GraphLinksModel <ActivityNode, string, string, ActivityLink>; model.AddLink(nodeData, "portBottom", nodeData, "portTop"); diagram.CommitTransaction("addselflink"); }
public void ContextMenuTemplate_Click(object sender, RoutedEventArgs e) { string templateID = Guid.NewGuid().ToString(); HtmlPage.Window.Invoke("SaveActivityTemplate", templateID); ActivityNode nodeData = ((Northwoods.GoXam.PartManager.PartBinding)((sender as FrameworkElement).DataContext)).Data as ActivityNode; //保存到数据库 DiagramUtils.WebInterAct.SaveActivityTemplate(templateID); //保存到palette中 DiagramUtils.AddActivityTemplate(this.mainDiagram, nodeData.WfClone(templateID)); DiagramUtils.GetTemplateKeys(this.mainDiagram).Add(templateID); }
public override void DoActivate() { base.DoActivate(); var part = this.AdornedPart.Data; ActivityNode nodeData = part as ActivityNode; string strKey = string.Format("{0}@{1}", this.Diagram.Tag.ToString(), nodeData.Key); if (string.Compare(this.Diagram.Tag.ToString(), WorkflowUtils.CurrentKey) != 0) { HtmlPage.Window.Invoke("LoadProperty", WorkflowUtils.CLIENTSCRIPT_PARAM_ACTIVITY, this.Diagram.Tag.ToString(), WorkflowUtils.ExtractActivityInfoJson(nodeData)); WorkflowUtils.CurrentKey = strKey; } }
protected override void VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { AddNode( activityNode.Id, activityNode.Name ?? typeof(TActivity).Name, activityNode.ToCategory(), new Bag { ["ActivityType"] = typeof(TActivity).Name }); AddLink(activityNode, activityNode.PointsTo, Categories.NormalFlowEdge); AddLink(activityNode, activityNode.FaultHandler, Categories.FaultFlowEdge); AddLink(activityNode, activityNode.CancellationHandler, Categories.CancellationFlowEdge); }
public static void AddActivityTemplate(Diagram diagram, ActivityNode newNode) { var main = GetMainView(diagram); var palette = main.FindName("mainPalette") as Palette; if (palette == null) { return; } palette.StartTransaction("AddNewNode"); palette.Model.AddNode(newNode); //var nodes = palette.NodesSource as ObservableCollection<ActivityNode>; //nodes.Add(newNode); palette.CommitTransaction("AddNewNode"); }
private async void AddActivity(ActivityNode activityNode, NodeEntityBase target) { try { IsBusy = true; if (AuthorisationManagerServiceManager.TargetNodeIsDropCandidate(target, activityNode)) { return; } if (target is ActivityNode) { var targets = Activities.Flatten <ActivityNode>(t => t.Id.Equals(target.Id), Roles, Users); var result = await authorisationManagerServiceManager.AddActivity(activityNode, (ActivityNode)target, targets); } else if (target is RoleNode) { var targets = Roles.Flatten <RoleNode>(t => t.Id.Equals(target.Id), Users); var result = await authorisationManagerServiceManager.AddActivity(activityNode, (RoleNode)target, targets); } else { throw new Exception( string.Format( "Invalid drop target. '{0}' can only be dropped onto a role or another activity.", activityNode.Text)); } ResetStatus(); } catch (Exception ex) { ShowMessage(new Message() { MessageType = MessageType.Error, Text = ex.Message }, true); IsBusy = false; } finally { OnPropertyChanged(""); } }
private async void RemoveActivity(ActivityNode activityNode) { if (activityNode.ParentType == ParentType.None) { ShowMessage(new Message() { MessageType = MessageType.Warn, Text = string.Format("Can't remove activity {0} as it has no parent.", activityNode.Text) }, true); return; } try { IsBusy = true; if (activityNode.ParentType == ParentType.ActivityNode) { var activities = Activities.Flatten <ActivityNode>(Roles, Users).ToList(); var result = await authorisationManagerServiceManager.RemoveActivityFromActivity(activityNode, activities); } else if (activityNode.ParentType == ParentType.RoleNode) { var roles = Roles.Flatten <RoleNode>(Users).ToList(); var result = await authorisationManagerServiceManager.RemoveActivityFromRole(activityNode, roles); } ResetStatus(); } catch (Exception ex) { ShowMessage(new Message() { MessageType = MessageType.Error, Text = ex.Message }, true); IsBusy = false; } finally { OnPropertyChanged(""); } }
public override void doRuleQuickFix(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository, int i, String errorMessage) { if (i == 0) { if (eaElement.Stereotype == ECOREModelingMain.EClassStereotype) { EClass eclass = new EClass(eaElement, repository); eclass.saveTreeToEATaggedValue(true); } else if (eaElement.Stereotype == SDMModelingMain.StartNodeStereotype || eaElement.Stereotype == SDMModelingMain.StopNodeStereotype || eaElement.Stereotype == SDMModelingMain.StoryNodeStereotype || eaElement.Stereotype == SDMModelingMain.StatementNodeStereotype) { ActivityNode aNode = SDMUtil.createCorrectActivityNode(repository, eaElement); aNode.loadTreeFromTaggedValue(); aNode.saveTreeToEATaggedValue(true); } } }
public override List <String> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository) { List <String> results = new List <string>(); if (eaElement.Stereotype == ECOREModelingMain.EClassStereotype) { EClass eclass = new EClass(eaElement, repository); eclass.loadTreeFromTaggedValue(); if (eclass.Name != eaElement.Name) { results.Add("EClass name is not equal to name of the saved EClass fragment"); } if (eclass.Guid != eaElement.ElementGUID) { results.Add("EClass GUID is not equal to saved fragment GUID"); } } else if (eaElement.Stereotype == SDMModelingMain.StartNodeStereotype || eaElement.Stereotype == SDMModelingMain.StopNodeStereotype || eaElement.Stereotype == SDMModelingMain.StoryNodeStereotype || eaElement.Stereotype == SDMModelingMain.StatementNodeStereotype) { ActivityNode aNode = SDMUtil.createCorrectActivityNode(repository, eaElement); if (aNode == null) { return(new List <string>()); } aNode.loadTreeFromTaggedValue(); if (aNode.EaGuid != eaElement.ElementGUID) { results.Add("ActivityNode GUID is not equal to saved fragment GUID"); } if (eaElement.Stereotype != SDMModelingMain.StopNodeStereotype && aNode.Name != eaElement.Name && eaElement.Stereotype != SDMModelingMain.StartNodeStereotype) { results.Add("ActivityNode name is not equal to name of the saved fragment"); } } return(results); }
public void comboBoxFromActivityNodeType(ActivityNode activityNode) { if (activityNode is StatementNode) { this.Text = "StatementNode"; } else if (activityNode is StoryNode) { StoryNode storyNode = activityNode as StoryNode; if (storyNode.ForEach) { this.Text = "ForEach"; } else { this.Text = "StoryNode"; } } }
/// <summary> /// 子流程菜单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMenu_Click(object sender, RoutedEventArgs e) { Node node = Part.FindAncestor <Node>(e.OriginalSource as UIElement); if (node == null) { return; } ActivityNode data = node.Data as ActivityNode; if (data == null) { return; } var element = sender as DependencyObject; DependencyObject topElement = null; while (true) { if (element == null) { break; } topElement = element; element = VisualTreeHelper.GetParent(element); } if (topElement == null) { return; } var main = topElement as MainPage; if (main == null) { return; } WebInteraction.OpenBranchProc(main.WrapperID, data.InstanceID); }
/// <summary> /// 将 node 信息转化成 info 信息 /// </summary> /// <param name="node"></param> /// <returns></returns> public static ActivityInfo ExtractActivityInfo(ActivityNode node) { ActivityType actType = ActivityType.Normal; if (node.IsDynamic == false) { actType = (ActivityType)Enum.Parse(typeof(ActivityType), node.Category, true); } ActivityInfo actInfo = new ActivityInfo() { Key = node.Key, Name = node.WfName, Description = node.WfDescription, Enabled = node.WfEnabled, ActivityType = actType, TemplateID = node.TemplateID }; return(actInfo); }
private async void SaveActivity(ActivityNode activityNode) { try { IsBusy = true; var newActivity = activityNode.Id.Equals(0); var duplicateActivities = Activities.Flatten <ActivityNode>(a => a.Id.Equals(activityNode.Id), Roles, Users); var savedActivity = await authorisationManagerServiceManager.SaveActivity(activityNode, duplicateActivities); if (savedActivity != null) { if (newActivity) { Activities.Add(activityNode); } } ResetStatus(); } catch (Exception ex) { ShowMessage(new Message() { MessageType = MessageType.Error, Text = ex.Message }, true); IsBusy = false; } finally { OnPropertyChanged(""); } }
private void ContextMenu_Opened(object sender, RoutedEventArgs e) { //var position = this.mainDiagram.LastMousePointInModel; //ContextMenuService.GetContextMenu(sender as FrameworkElement); //(sender as Shared.Silverlight.Controls.ContextMenu).OpenPopup(position); Northwoods.GoXam.PartManager.PartBinding currentBinding = (Northwoods.GoXam.PartManager.PartBinding)((sender as FrameworkElement).DataContext); ActivityNode nodeData = currentBinding.Data as ActivityNode; if (nodeData == null) { return; } string strKey = string.Format("{0}@{1}", this.mainDiagram.Tag.ToString(), nodeData.Key); if (string.Compare(strKey, WorkflowUtils.CurrentKey) != 0) { HtmlPage.Window.Invoke("LoadProperty", WorkflowUtils.CLIENTSCRIPT_PARAM_ACTIVITY, this.mainDiagram.Tag.ToString(), WorkflowUtils.ExtractActivityInfoJson(nodeData)); WorkflowUtils.CurrentKey = strKey; } }
////初始化过程中也会执行!!! protected override void OnNodeAdded(Node node) { base.OnNodeAdded(node); ActivityNode data = node.Data as ActivityNode; if (data == null) { return; } if (IsOverviewDiagram(node)) { return; } if (data.IsDynamic == false) { ActivityType nodeType = (ActivityType)Enum.Parse(typeof(ActivityType), data.Category, false); if (!IsValidKey(data.Key, nodeType, node.Diagram)) { data.Key = CreateActivityKey(); } } else { if (!IsValidKey(data.Key, ActivityType.Normal, node.Diagram)) { data.Key = CreateActivityKey(); } data.IsDynamic = true; } _webMethod.LoadProperty(WorkflowUtils.CLIENTSCRIPT_PARAM_ACTIVITY, node.Diagram.Tag.ToString(), WorkflowUtils.ExtractActivityInfoJson(data)); }
public DiagramPageViewModel(WorkflowInfo info, IWebInterAction client) { this._clientProxy = client; InitCommand(); this.WfInfo = info; this.Key = info.Key; this.Name = info.Name; if (!string.IsNullOrEmpty(info.GraphDescription)) { DiagramModel.Load<ActivityNode, ActivityLink>( XElement.Parse(info.GraphDescription), WorkflowUtils.DIAGRAM_XELEMENT_NODENAME, WorkflowUtils.DIAGRAM_XELEMENT_LINKNAME); foreach (var node in (ObservableCollection<ActivityNode>)DiagramModel.NodesSource) { var actInfo = info.Activities.SingleOrDefault(p => p.Key == node.Key); if (actInfo != null) { node.Category = actInfo.ActivityType.ToString(); if (actInfo.BranchProcessTemplates == null) continue; if (actInfo.BranchProcessTemplates.Count > 0) { node.WfHasBranchProcess = true; } } } //为兼容2011-04-22之前保存的数据 foreach (var link in (ObservableCollection<ActivityLink>)DiagramModel.LinksSource) { if (link.From == "N0" && link.FromPort == "portTop") { link.FromPort = "portBottom"; } } return; } foreach (ActivityInfo activity in info.Activities) { ActivityNode item = new ActivityNode() { Key = activity.Key, Category = activity.ActivityType.ToString(), WfName = activity.Name, WfDescription = activity.Description, WfEnabled = activity.Enabled }; this.DiagramModel.AddNode(item); } foreach (var transition in info.Transitions) { this.DiagramModel.AddLink(new ActivityLink() { Key = transition.Key, Text = transition.Name, From = transition.FromActivityKey, To = transition.ToActivityKey }); } }
private void LoadPropertyCommandExecuted(ActivityNode acNode) { this.CurrentChildSelectedKey = acNode.Key; MessageBox.Show(this.CurrentChildSelectedKey); }
private bool CanLoadPropertyCommand(ActivityNode acNode) { return string.Compare(this.CurrentChildSelectedKey, acNode.Key) != 0; }
private void ProcessNodes() { var nodes = DiagramModel.NodesSource as ObservableCollection<ActivityNode>; var newActQuery = from act in this.WfInfo.Activities where nodes.Count(p => p.Key == act.Key) == 0 select act; foreach (var newAct in newActQuery) { ActivityNode newItem = new ActivityNode() { Key = newAct.Key, WfName = newAct.Name, WfDescription = newAct.Description, WfEnabled = newAct.Enabled, WfRuntimeIsNewAdd = true, CloneKey = newAct.CloneKey }; if (string.IsNullOrEmpty(newAct.CloneKey) == false) newItem.Category = "CloneTemplate"; else if (newAct.IsDynamic == true) newItem.Category = "DynamicTemplate"; else newItem.Category = "NodeTemplate"; this.DiagramModel.AddNode(newItem); } foreach (var node in nodes) { if (node.Key == this.WfInfo.CurrentActivityKey) node.WfRuntimeIsCurrent = true; if (this.WfInfo.Activities.Count(p => p.Key == node.Key) == 0) { node.WfRuntimeIsRemove = true; } else { var actInfo = WfInfo.Activities.Single(p => p.Key == node.Key); node.WfRuntimeHasBranchProcess = actInfo.HasBranchProcess; node.InstanceID = actInfo.ID; node.WfRuntimeOperator = actInfo.Operator; node.NodeDetail = GetNodeDetail(actInfo); if (actInfo != null) { if (actInfo.Status == "已完成" || actInfo.Status.ToLower() == "completed") { node.WfRuntimeIsComplete = true; } if (actInfo.Status == "等待中" || actInfo.Status.ToLower() == "pending") { node.WfRuntimeIsPending = true; } } } } this.OnPropertyChanged("DiagramModel"); }