// проверка активности
        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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }
Example #5
0
 private void InitializeData(ActivityNode controller)
 {
     foreach (var pat in controller.Users.Values.OfType <Patient>())
     {
         Patients.Add(pat);
     }
 }
Example #6
0
        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);
                    }
                }
            }
        }
Example #8
0
    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);
     }
 }
Example #10
0
        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);
        }
Example #11
0
        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)));
                }
            });
        }
Example #12
0
 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;
 }
Example #13
0
		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");
		}
Example #14
0
        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();
        }
Example #15
0
        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);
        }
Example #16
0
        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);
        }
Example #17
0
        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);
        }
Example #21
0
        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");
        }
Example #22
0
        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("");
            }
        }
Example #23
0
        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);
        }
Example #28
0
        /// <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);
        }
Example #29
0
        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");
		}