public sealed override async Task <string> Execute(OrchestrationContext context, string input)
        {
            context.MessageDataConverter = new TypelessJsonDataConverter();
            context.ErrorDataConverter   = new TypelessJsonDataConverter();
            Context       = context;
            EventReceiver = new OrchestrationEventReceiver(context);
            GuidGenerator = new OrchestrationGuidGenerator(context.OrchestrationInstance.ExecutionId);

            var parameter = DataConverter.Deserialize <TInput>(input);

            string serializedResult;

            try
            {
                var result = await Execute(parameter);

                serializedResult = DataConverter.Serialize(result);
            }
            catch (Exception e) when(!DUtils.IsFatal(e) && !DUtils.IsExecutionAborting(e))
            {
                var details = DUtils.SerializeCause(e, DataConverter);

                throw new OrchestrationFailureException(e.Message, details);
            }
            return(serializedResult);
        }
示例#2
0
 public OrchestrationEventListener(
     OrchestrationEventReceiver eventReceiver,
     Action <string, string> handler)
 {
     _eventReceiver        = eventReceiver;
     _handler              = handler;
     _eventReceiver.Event += _handler;
 }