コード例 #1
0
        public void UnserializeEventIncoming()
        {
            string payload = @"{
      'Name': 'evnt1',
      'Uuid': '352d5082-3fb9-4db8-8a59-bc864ade4929',
      'ExternalId': 'c65ea000-dce0-44a3-a6f3-9daf7eebaefe',
      'CreationDate': '2019-09-23T09:48:52.1868472+02:00',
      'EventDate': '2019-09-23T09:48:47.3047926+02:00',   
      'Site': 'site1',
      'infos': { 'name': 'toto' },
      'infos2': [ { 'name': 'toto' }, { 'name': 'titi' } ]
    }".Replace("'", "\"");


            IWorkflowSerializer serializer = new PartialJsonWorkflowSerializer();
            var msg = new IncomingEvent();

            serializer.Populate(msg, payload);

            var payload2 = serializer.Serialize(msg);

            msg = new IncomingEvent();
            serializer.Populate(msg, payload2);
            var payload3 = serializer.Serialize(msg);

            Assert.AreEqual(payload2, payload3);
        }
コード例 #2
0
        private WorkflowEngine CreateEngine(MemoryStorage storage, string configText)
        {
            var template = new TemplateRepository(typeof(TemplateModels))
            {
                DefaultAction = TemplateModels.DefaultAction,
            };
            var metadatas = new MetadatRepository(typeof(MetadataModels))
            {
                DefaultAction = MetadataModels.DefaultAction.ToDictionary(c => c.Key, c => c.Value),
            };

            var serializer = new PartialJsonWorkflowSerializer();

            WorkflowsConfig configs = new WorkflowsConfig()
                                      .AddDocument(GetConfig(configText))
            ;

            var factory = new WorkflowFactory <RunContext>(null, null)
            {
                Serializer = serializer,
            };

            var processor = new WorkflowProcessor <RunContext>(configs, factory)
            {
                LoadExistingWorkflowsByExternalId = (key) => storage.GetBy <Workflow, string>(key, c => c.ExternalId).ToList(),
                OutputActions = () => CreateOutput(serializer, storage),
                Templates     = template,
                Metadatas     = metadatas,
            };

            WorkflowEngine engine = new WorkflowEngine()
            {
                Processor = processor,
            };

            return(engine);
        }
コード例 #3
0
        public void InitializeWorkflow()
        {
            var config = new SqlManagerConfiguration()
            {
                ConnectionString      = "Data Source=L00280\\SQLEXPRESS;Initial Catalog=Workflow;Integrated Security=True",
                ProviderInvariantName = "SqlClient"
            };

            DbProviderFactories.RegisterFactory(config.ProviderInvariantName, SqlClientFactory.Instance);

            var serializer = new PartialJsonWorkflowSerializer();

            WorkflowFactory factory = new WorkflowFactory <RunContext>(null, null)
            {
                Serializer = serializer,
            };


            WorkflowStoreSql store = new WorkflowStoreSql(new Bb.Dao.SqlManager(config), factory);



            var w = new Workflow()
            {
                Uuid         = Guid.NewGuid(),
                ExternalId   = Guid.NewGuid().ToString(),
                Change       = ChangeEnum.New,
                Concurency   = 1,
                CreationDate = DateTimeOffset.Now,
                Version      = 1,
                WorkflowName = "work1",
            }.AddEvents
            (
                new Event()
            {
                Uuid         = Guid.NewGuid(),
                Name         = "Event1",
                Change       = ChangeEnum.New,
                CreationDate = DateTimeOffset.Now,
                EventDate    = DateTimeOffset.Now.AddMinutes(-5),
                FromState    = "State1",
                ToState      = "State2",
            }
                .AddActions
                (
                    new PushedAction
            {
                Uuid           = Guid.NewGuid(),
                Name           = Constants.PushReminder,
                Kind           = Constants.PushActionName,
                Change         = ChangeEnum.New,
                ExecuteMessage = new MessageRaw()
                {
                    Header = new MessageHeader(null),
                    Body   = (MessageBlock) new DynObject()
                             .Add("name", "callMethod1")
                             .Add("arguments", new DynObject()
                                  .Add("arg1", "a1")
                                  .Add("arg2", "a2")
                                  ).Resolve(null),
                }
            }
                )
            );

            store.Save(w);

            var items = store.LoadByExternalId(w.ExternalId).First();
        }