コード例 #1
0
        protected override async void OnEnterState()
        {
            var printingWorkflow = new DelayWorkflow(
                Workflow.Create(
                    async() =>
            {
                await WorkflowInstance.Action("Done");
            }),
                500);

            await WorkflowInstance.EnterWorkflow(printingWorkflow, false);
        }
コード例 #2
0
ファイル: UnitTests.cs プロジェクト: hguven/Lightwork
        public async Task UnitTestDelayUntilConditionWorkflow()
        {
            using (var engine = new WorkflowEngine())
            {
                var argConditionMet = new Argument <bool>("ConditionMet");

                var escalationDateTime   = DateTime.Now.AddSeconds(5);
                var setConditionDateTime = DateTime.Now.AddSeconds(1);
                var delayUntilWorkflow   = new DelayUntilConditionWorkflow(
                    Workflow.Create(
                        instance =>
                {
                    instance.GetArgument <bool>("HasEscalated").Value = true;
                }),
                    () => argConditionMet.Value,
                    escalationDateTime);

                var delayUntilInstance = engine.CreateWorkflow(delayUntilWorkflow);
                await delayUntilInstance.Start(new Argument <bool>("HasEscalated"));

                var setConditionWorkflow = new DelayWorkflow(
                    Workflow.Create(
                        () =>
                {
                    argConditionMet.Value = true;
                }),
                    Convert.ToInt32(setConditionDateTime.Subtract(DateTime.Now).TotalMilliseconds));

                var setConditionInstance = engine.CreateWorkflow(setConditionWorkflow);
                await setConditionInstance.Start();

                await delayUntilInstance.Wait();

                await setConditionInstance.Wait();

                Assert.IsTrue(delayUntilInstance.GetArgument <bool>("HasEscalated").Value);
                Assert.IsTrue(DateTime.Now >= setConditionDateTime);
                Assert.IsFalse(DateTime.Now >= escalationDateTime);
            }
        }