Exemple #1
0
        public void TestDatabaseTypeDeserialization(string dataType, string value)
        {
            string json = string.Format(@"{{""dataType"":""{0}"",""value"":""{1}""}}", dataType, value);

            using (var str = new StringReader(json))
            {
                var container = JSON.Deserialize <ObjectContainer>(str, Options);

                DatabaseType databaseType = DatabaseTypeHelper.ConvertFromDisplayName(dataType);

                string stringVal = container.Value;

                object val = databaseType.ConvertFromString(stringVal);

                if (val is DateTime)
                {
                    DateTime val1 = ( DateTime )val;
                    DateTime val2 = DateTime.Parse(value);

                    Assert.AreEqual(val1, val2);
                }
                else
                {
                    Assert.AreEqual(value.ToLowerInvariant( ), val.ToString( ).ToLowerInvariant( ));
                }
            }
        }
Exemple #2
0
        public HttpResponseMessage <string> Run(string idOrAlias, [FromBody] List <ParameterValue> values, bool trace = false)
        {
            using (Profiler.Measure("WorkflowController.Run"))
            {
                MDL.EntityRef eid = GetId(idOrAlias);

                var workflow = MDL.Entity.Get <MDL.Workflow>(eid);

                var parameterValues = new Dictionary <string, object>( );                // { { "ResourceId", new EntityRef(resourceId) } };

                using (new SecurityBypassContext())
                {
                    if (values != null)
                    {
                        foreach (ParameterValue kv in values)
                        {
                            EventLog.Application.WriteTrace("Running workflow {0} with {1}={2} ({3})", eid.Id, kv.Name,
                                                            kv.Value, kv.TypeName);

                            var argType = MDL.Entity.Get <MDL.ArgumentType>(kv.TypeName, MDL.ArgumentType.InternalDisplayName_Field);

                            switch (argType.Alias)
                            {
                            case "core:objectArgument":
                                throw new ApplicationException("Object arguments not implemented.");

                            case "core:resourceListArgument":
                                var ids = Jil.JSON.Deserialize <IEnumerable <long> >(kv.Value);
                                parameterValues.Add(kv.Name, Factory.EntityRepository.Get <MDL.IEntity>(ids));
                                break;

                            case "core:resourceArgument":
                                parameterValues.Add(kv.Name, GetId(kv.Value).Entity);
                                break;

                            default:
                                DatabaseType dbType = DatabaseType.ConvertFromDisplayName(argType.InternalDisplayName);
                                parameterValues.Add(kv.Name, dbType.ConvertFromString(kv.Value));
                                break;
                            }
                        }
                    }
                }

                var taskId = WorkflowRunner.Instance.RunWorkflowAsync(new WorkflowStartEvent(workflow)
                {
                    Arguments = parameterValues, Trace = trace
                });

                return(new HttpResponseMessage <string>(taskId));
            }
        }
        //DatabaseType.BinaryType
        //DatabaseType.StructureLevelsType

        private static void TestType <T>(DatabaseType type, T value, string sValue,
                                         bool testDatabaseTypeHelper = true, bool testTypeOverrides = true, bool testFromString = true, bool testToString = true) where T : IComparable
        {
            if (testDatabaseTypeHelper)
            {
                if (testFromString)
                {
                    // Test DatabaseTypeHelper.ConvertFromString
                    object actualValue = DatabaseTypeHelper.ConvertFromString(type, sValue);
                    Assert.IsTrue(value.CompareTo(actualValue) == 0, "DatabaseTypeHelper.ConvertFromString");
                }

                if (testToString)
                {
                    // Test DatabaseTypeHelper.ConvertToString
                    string actualString = DatabaseTypeHelper.ConvertToString(type, value);
                    Assert.AreEqual(sValue, actualString, "DatabaseTypeHelper.ConvertToString");
                }
            }

            if (testTypeOverrides)
            {
                if (testFromString)
                {
                    // Test type.ConvertFromString
                    object actualValue2 = type.ConvertFromString(sValue);
                    Assert.IsTrue(value.CompareTo(actualValue2) == 0, "DatabaseTypeHelper.ConvertFromString");
                }

                if (testToString)
                {
                    // Test type.ConvertToString
                    string actualString2 = type.ConvertToString(value);
                    Assert.AreEqual(sValue, actualString2, "DatabaseTypeHelper.ConvertToString");
                }
            }
        }