2017-10-13 13 views
0

SWF 용 Java 플로우 프레임 워크 사용.AWS SWF 활동 예약

SWF에서 특정 시간 동안 활동을 예약하는 방법은 없나요? 2017 년 10 월 22 일 오전 9시에 "sendNotification"을 보내주십시오.

이 예제를 사용하면 지연 시간이 있지만 지정된 시간 동안 타이머를 만들 수 없습니다. 현재 시간 스탬프 및 이벤트가 발생해야하는 대상 시간을 기준으로 지연을 계산할 수 있지만 현재 시스템 시간을 얻으려고하면 워크 플로 실행 중에 현재 시간을 가져 오는 방법은 무엇입니까? 워크 플로 결정자가 워크 플로에 non-determinism을 만들고 실패합니다.

워크 플로우 시계의 현재 시간은 나에게 아무 소용이있는 워크 플로우의 시작 시간을 반환

Date currentDate = new Date(); 
    long sysTimeInSeconds = (currentDate.getTime()/1000); 
    System.out.println("System Time : " + sysTimeInSeconds); 
    Promise<Void> timer = clock.createTimer((timeStampInSeconds - sysTimeInSeconds)); 

는 [우리가 시스템에서 현재 시간을 사용하고 있기 때문에 위의 코드는 허용되지 않습니다].

그래서 특정 시간 동안 활동을 예약 할 수 있습니까?

답변

0

WorkflowClock을 사용하십시오. 결정이 재연되는 시간 인 올바른 결정 론적 현재 시간을 반환합니다.

Here is the line of code 현재 결정 시간으로 시계를 업데이트합니다.

+0

안녕하세요 Maxim, Cron Decorators로 장식 된 액티비티가 활동을 예약하는 가장 좋은 방법 일 것입니다. 하지만 문제는 여기에있는 샘플을 사용하면 [https://github.com/aws/aws-swf-flow-library/blob/master/src/samples/AwsFlowFramework/src/com/amazonaws /services/simpleworkflow/flow/examples/cron/CronWorkflowImpl.java]를 참조하십시오. 그런 다음 워크 플로 결정자에서 다른 많은 활동이있는 경우 재생 동작으로 인해 스케줄러 활동이 두 번 이상 예약됩니다. 결정자의 활동이 한 번만 계획되도록하는 방법에 대한 제안? –

+0

재생 동작이 두 번 이상 일정을 잡아서는 안됩니다. 이 경우 Decorator에 버그가있는 것 같습니다. –