亚马逊AWS简单工作流服务SWF C#示例

4
2个回答

5
作为熟悉SWF的一部分,我最终编写了一个通用案例库,希望其他人也能使用。它被称为SimpleWorkflowFramework.NET,并作为开源项目在https://github.com/sdebnath/SimpleWorkflowFramework.NET上提供。它肯定需要很多帮助,如果您感兴趣,请直接参与! :)

0

我开发了一个开源的.NET库- Guflow,用于编写Amazon SWF程序。以下是如何编写一个转码视频的工作流程:

[WorkflowDescription("1.0")]
public class TranscodeWorkflow : Workflow
{
  public TranscodeWorkflow()
  {
    //DownloadActivity is the startup activity and will be scheduled when workflow is started.
    ScheduleActivity<DownloadActivity>().OnFailure(Reschedule);

    //After DownloadActivity is completed TranscodeActivity activity will be scheduled.
    ScheduleActivity<TranscodeActivity>().AfterActivity<DownloadActivity>()
        .WithInput(a => new {InputFile = ParentResult(a).DownloadedFile, Format = "MP4"})

    ScheduleActivity<UploadToS3Activity>().AfterActivity<TranscodeActivity>()
        .WithInput(a => new {InputFile = ParentResult(a).TranscodedFile});

    ScheduleActivity<SendConfirmationActivity>().AfterActivity<UploadToS3Activity>();
  }
  private static dynamic ParentResult(IActivityItem a) => a.ParentActivity().Result();
}

在上面的例子中,为了清晰起见,我省略了任务路由。以下是创建活动的方法:
[ActivityDescription("1.0")]
public class DownloadActivity : Activity
{
  //It supports both sync/async method.
  [ActivityMethod]
  public async Task<Response> Execute(string input)
  {
      //simulate downloading of file
      await Task.Delay(10);
      return new Response() { DownloadedFile = "downloaded path", PollingQueue = PollingQueue.Download};
  }

  public class Response
  {
      public string DownloadedFile;
  }
}

为了清晰起见,我将省略其他活动的示例。Guflow受到文档, 教程示例的支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接