2013-04-17 48 views

回答

4

隨着越來越熟悉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支持documentation,tutorialsamples