public async Task Run(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            ILogger logger)
        {
            var message         = context.GetInput <Message>();
            var timeout         = TimeSpan.FromHours(24);
            var defaultApproval = ApprovalBuilder.BuildDefault();

            var approval1 = context.WaitForExternalEvent(
                EventNames.MultipleApproveEvents1,
                timeout,
                defaultApproval);

            var approval2 = context.WaitForExternalEvent(
                EventNames.MultipleApproveEvents2,
                timeout,
                defaultApproval);

            var approvals = await Task.WhenAll(approval1, approval2);

            var putOnQueueActivity = approvals.All(a => a.IsApproved)
                ? nameof(PutOnApprovedMessagesQueueActivity)
                : nameof(PutOnDeniedMessagesQueueActivity);

            await context.CallActivityAsync <Message>(
                putOnQueueActivity,
                message);

            context.SetCustomStatus(new { QueueActivityName = putOnQueueActivity });
        }
Beispiel #2
0
        public async Task Run(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            ILogger logger)
        {
            var message = context.GetInput <Message>();

            var approval = await context.WaitForExternalEvent(
                EventNames.SingleApproveEvent,
                TimeSpan.FromSeconds(10),
                ApprovalBuilder.BuildDefault());

            var putOnQueueActivity = approval.IsApproved ?
                                     nameof(PutOnApprovedMessagesQueueActivity) :
                                     nameof(PutOnDeniedMessagesQueueActivity);

            await context.CallActivityAsync <Message>(
                putOnQueueActivity,
                message);

            context.SetCustomStatus(new { QueueActivityName = putOnQueueActivity });
        }