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); }
public override async Task <string> Execute(OrchestrationContext context, string input) { var parameters = PrepareParameters(input, new Dictionary <Type, Func <object> > { [typeof(OrchestrationContext)] = () => context, [typeof(OrchestrationEventReceiver)] = () => _eventReceiver = new OrchestrationEventReceiver(context), [typeof(OrchestrationGuidGenerator)] = () => new OrchestrationGuidGenerator(context.OrchestrationInstance.ExecutionId) }); string serializedResult; try { var result = _methodInfo.Invoke(Instance, parameters); serializedResult = await SerializeResult(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); }