Esempio n. 1
0
        protected override async Task Execute(WorkflowInstance instance)
        {
            if (Delay.Value > 0)
            {
                Func <Task> delayFunc;
                if (UseTaskDelay.Value)
                {
                    delayFunc = async() => await Task.Delay(Delay.Value);
                }
                else
                {
                    delayFunc = async() => await Task.Run(() => Thread.Sleep(Delay.Value));
                }

                if (UseWorkflowDelay.Value)
                {
                    await instance.EnterWorkflow(Create(delayFunc));
                }
                else
                {
                    await delayFunc();
                }
            }

            Number.Lock(() => { Number.Value += 1; });
        }
        protected override async void OnEnterState()
        {
            var printingWorkflow = new DelayWorkflow(
                Workflow.Create(
                    async() =>
            {
                await WorkflowInstance.Action("Done");
            }),
                500);

            await WorkflowInstance.EnterWorkflow(printingWorkflow, false);
        }
        private async Task OnContactForAssignment()
        {
            if (EscalationTimeout.Value == int.MaxValue)
            {
                return;
            }

            var escalationTime     = DateTime.Now.AddMilliseconds(EscalationTimeout.Value);
            var delayUntilWorkflow = new DelayUntilConditionWorkflow(
                Create(
                    instance =>
            {
                HasEscalated.Value = true;
            }),
                () => IsBooked.Value,
                escalationTime,
                true);

            await WorkflowInstance.EnterWorkflow(delayUntilWorkflow, false);
        }