2017-12-28 2 views
-1
public void configure(StateMachineConfigurationConfigurer<States, Events> config) throws Exception { 
    config 
      .withConfiguration() 
      .machineId("test") 
      .autoStartup(false) 
      .listener(listener()); 
    } 

이 코드 세그먼트를 사용하면 ID "test"가있는 컴퓨터를 설정할 수 있지만 시작하기 전에 일부 매개 변수에 따라 일부 UUID로 각 컴퓨터를 고유하게 식별 할 수있는 환경에서 작업하고 싶습니다 그것은 다시오고 때와 동일한 상태 머신스프링 상태 기계

public void start(Request incomingRequest) { 

    WorkflowInstance instance = new WorkflowInstance(); 
    instance.setSomeMessage(incomingRequest.getMessage()); 
    instance = workflowInstanceRepository.save(instance); //This will generate an UUID which I want to use to get my machine everytime I am coming back and changing the transition 
    //ID should be taken from the config? or how as each one will have a separate data 
    StateMachine<States, Events> stateMachine = factory.getStateMachine(); 
    stateMachine.start(); 
    Message<Events> message = MessageBuilder 
      .withPayload(Events.INITIALIZING) 
      .setHeader("message", incomingRequest).build(); 
    stateMachine.sendEvent(message); 
    } 
을 시작할 수 있도록 내가 그렇게하고 이벤트에 같은 공유 할 수있는 방법

답변

0

대신 당신이 그렇게 공장을 사용할 수 configuaration에 컴퓨터 ID를 설정할 필요가 없습니다 그것을 설정하십시오 :

사고 공장은이 기계를 주변에 유지하지 않으며 기계 ID를 설정할 수있게 될 때마다 매번 새로운 인스턴스를 반환합니다. 그것은 그건 당신이 여기에 수행 할 작업처럼 보이는

StateMachine<States, Events> stateMachine = factory.getStateMachine("test");

다음 릴리스 1.2.8 실행 시스템을 관리하는 데 도움이 몇 가지 추가 기능을해야합니다.

관련 문제