Beispiel #1
0
        /// <summary>
        /// Add a a log activity
        /// </summary>
        public static Workflow AddUpdateField(this Workflow wf, string name, Resource fieldOrRel = null, string resourceExpression = null, string valueExpression = null, string fromNamed = null, string fromExit = null)
        {
            var uf = new UpdateFieldActivity {
                Name = name
            };
            var ufAs = uf.As <WfActivity>();

            if (resourceExpression != null)
            {
                AddExpressionToActivityArgument(wf, ufAs, "Record", resourceExpression);
            }

            if (fieldOrRel != null)
            {
                uf.InputArguments.Add(new ResourceArgument {
                    Name = "1"
                }.Cast <ActivityArgument>());
                SetActivityArgumentToResource(wf, ufAs, "1", fieldOrRel);
            }


            if (valueExpression != null)
            {
                uf.InputArguments.Add(new ObjectArgument {
                    Name = "1_value"
                }.Cast <ActivityArgument>());
                AddExpressionToActivityArgument(wf, ufAs, "1_value", valueExpression);
            }

            wf.AddActivity(ufAs, fromNamed, fromExit);
            AddMissingExpressionParametersToWorkflow(wf);

            return(wf);
        }
        public void UpdateRel()
        {
            var employeeType = Entity.Get <EntityType>("test:employee");
            var managerType  = Entity.Get <EntityType>("test:manager");
            var reportsToRel = Entity.Get <Relationship>("test:reportsTo");

            var bob        = new Entity(employeeType);
            var bobManager = new Entity(employeeType);

            bob.Save();
            bobManager.Save();
            ToDelete.Add(bob.Id);
            ToDelete.Add(bobManager.Id);

            var updateActivity = new UpdateFieldActivity();

            updateActivity.InputArguments.Add(new ResourceArgument {
                Name = "1"
            }.Cast <ActivityArgument>());
            updateActivity.InputArguments.Add(new ResourceArgument {
                Name = "1_value_"
            }.Cast <ActivityArgument>());
            updateActivity.InputArguments.Add(new BoolArgument {
                Name = "1_reverse"
            }.Cast <ActivityArgument>());
            updateActivity.InputArguments.Add(new BoolArgument {
                Name = "1_replace"
            }.Cast <ActivityArgument>());

            updateActivity.Save();
            ToDelete.Add(updateActivity.Id);

            var updateActionAs = updateActivity.As <WfActivity>();

            ActivityImplementationBase nextActivity = updateActionAs.CreateWindowsActivity();

            var args = new Dictionary <string, object>
            {
                {
                    "Record", bob
                },
                {
                    "1_value_", bobManager
                },
                {
                    "1", reportsToRel
                },
                {
                    "1_reverse", false
                }
            };

            RunActivity(nextActivity, args);

            var bob2      = Entity.Get(bob);
            var reportsTo = bob2.GetRelationships(reportsToRel);

            Assert.AreEqual(1, reportsTo.Count(), "Relationship set");
            Assert.AreEqual(bobManager.Id, reportsTo.First().Entity.Id, "Manager is correct");
        }
        public void UpdateField()
        {
            var employeeType = CodeNameResolver.GetTypeByName("AA_Person").As <EntityType>();
            var ageField     = employeeType.Fields.First(f => f.Name == "Age");
            var bob          = new Entity(employeeType);

            bob.Save();
            ToDelete.Add(bob.Id);

            var updateActivity = new UpdateFieldActivity();

            updateActivity.InputArguments.Add(new ResourceArgument {
                Name = "1"
            }.Cast <ActivityArgument>());
            updateActivity.InputArguments.Add(new IntegerArgument {
                Name = "1_value"
            }.Cast <ActivityArgument>());

            updateActivity.Save();
            ToDelete.Add(updateActivity.Id);

            var updateActionAs = updateActivity.As <WfActivity>();

            ActivityImplementationBase nextActivity = updateActionAs.CreateWindowsActivity();

            var args = new Dictionary <string, object>
            {
                {
                    "Record", bob
                },
                {
                    "1_value", 32
                },
                {
                    "1", (new EntityRef(ageField.Id)).Entity
                }
            };

            RunActivity(nextActivity, args);

            Entity.Get(bob);
            var age = (int?)bob.GetField(ageField);

            Assert.AreEqual(32, age);
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fieldAliasExpressionPairs">An array of field-alias, expression pairs</param>
        public static Workflow AddUpdate(this Workflow wf, string name, string resourceExpression, string[] fieldAliasExpressionPairs,
                                         string fromNamed = null, string fromExit = null)
        {
            var update = new UpdateFieldActivity()
            {
                Name = name
            };
            var updateAs = update.As <WfActivity>();

            ActivityTestHelper.AddExpressionToActivityArgument(wf, updateAs, "Record", resourceExpression, false);

            wf.AddActivity(updateAs, fromNamed, fromExit);

            var count = 0;

            for (int i = 0; i < fieldAliasExpressionPairs.Count(); i += 2)
            {
                var argName      = "input" + count++;
                var argValueName = argName + "_value";

                var result1 = (new StringArgument()
                {
                    Name = argName
                }).As <ActivityArgument>();;
                update.InputArguments.Add(result1);
                AddExpressionToActivityArgument(wf, updateAs, argName, fieldAliasExpressionPairs[i]);

                var result2 = (new ObjectArgument {
                    Name = argValueName
                }).As <ActivityArgument>();
                update.InputArguments.Add(result2);
                AddExpressionToActivityArgument(wf, updateAs, argValueName, fieldAliasExpressionPairs[i + 1]);
            }

            AddMissingExpressionParametersToWorkflow(wf);

            return(wf);
        }