2013-04-17 3 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, tutorial и samples.

Смежные вопросы