2017-12-01 7 views
1

워크 플로 실행을 시작해야하지만 다음 후속 이벤트가 실행될 때까지 기다려야한다는 요구 사항이 있습니다. 이벤트는 서비스가 클라이언트로부터받는 API 호출을 기반으로 생성됩니다. 이벤트 의미론은 상태 시스템을 기반으로합니다. 이것이 java에서 어떻게 구현 될 수 있는지 알려 주시기 바랍니다. 참조 할 샘플 코드를 입력하십시오.워크 플로 실행이 이벤트가 수신 될 때까지 대기해야하고 이후 실행을 계속 진행해야하는 경우

답변

0

AWS Flow Framework를 사용하는 경우 외부 이벤트는 Signal API를 사용하여 워크 플로 인스턴스를 알립니다.

@Workflow 
@WorkflowRegistrationOptions(
    defaultExecutionStartToCloseTimeoutSeconds = 60, 
    defaultTaskStartToCloseTimeoutSeconds = 10) 
public interface MyWorkflow 
{ 
    @Execute(version = "1.0") 
    void startMyWF(int a, String b); 

    @Signal 
    void signal1(int a, int b, String c); 
} 

public class MyWFImpl implements MyWorkflow 
{ 
    MyActivitiesClient client = new MyActivitiesClientImpl(); 
    @Override 
    public void startMyWF(int a, String b){ 
    Promise<Integer> result = client.activity1(); 
    client.activity2(result); 
    } 
    @Override 
    public void signal1(int a, int b, String c){ 
    //Process signal 
     client.activity2(a + b); 
    } 
} 

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features.workflow.html 워크 플로우 인터페이스를 작성하는 방법에 대해 설명합니다 : 워크 플로우 내부는 같은 핸들러 메소드가된다.

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/workflowimpl.html은 워크 플로를 구현하는 방법을 설명합니다.

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/clients.html은 외부 클라이언트를 사용하여 신호를 보내는 방법을 설명합니다.

+0

Deciders를 사용하여 모든 상태 시스템 로직을 구현할 필요가 없습니다. [AWS 링크] (http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-dev-deciders.html)에 제시된 if 시나리오와 같습니다. –

+0

정확히 어떻게 Java에서이 로직을 구현할 수 있습니까? IF lastEvent = "StartWorkflowInstance" addToDecisions ScheduleVerifyOrderActivity ELSIF lastEvent = "CompleteVerifyOrderActivity" addToDecisions의 ScheduleChargeCreditCardActivity ELSIF lastEvent = "CompleteChargeCreditCardActivity" addToDecisions ScheduleCompleteShipOrderActivity ELSIF lastEvent = "CompleteShipOrderActivity" addToDecisions의 ScheduleRecordOrderCompletion ELSIF lastEvent = "CompleteRecordOrderCompletion " addToDecisions CloseWorkflow ENDIF –

+0

하시기 바랍니다. ,하지 마. 그냥 Flow Framework를 사용하십시오. 그것은 꽤 귀찮은 모든 로우 레벨 디테일을 처리합니다. http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/welcome.html –