рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

ROSEU рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд▓реЗрдЦ ROSEU рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдореЛрдб рдореЗрдВ рдпрд╛ рд░реЛрдорд┐рдВрдЧ рдХреЗрдВрджреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛ рдИрдбреАрдУ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдШрдЯрдирд╛ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рдПрдВред рдЕрдЧрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред

рдЫрд╡рд┐

ROSEU рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ ред

рдПрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдИрдбреАрдЖрдИ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрддрд╛ рд╣реИред рдирд┐рдордВрддреНрд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рддреЛ "рдЕрдиреБрд░реЛрдз" рдпрд╛ "рдмреНрд░реЗрдХ" рд╣реИред

рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ "рдЕрдиреБрд░реЛрдз" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ "рдмреНрд░реЗрдХ" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рд╣рдо рдИрдбреАрдЖрдИ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдд рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

  1. рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓ - NO_CONNECTION
  2. рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд░реЛрдорд┐рдВрдЧ рдореЗрдВ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд╕реНрдерд╛ рдХреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХрддрд╛ рдФрд░ рдЗрд╕рдХреЗ рд░реЛрдорд┐рдВрдЧ рдХреЗрдВрджреНрд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдЪрд┐рдд рд╣реИред - INVITATION_SAVED
  3. рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд - ARE_CONNECTED
  4. рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдкрд╣рд▓ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ - CONNECTION_BROKEN
  5. рдПрдХ рдмрд╛рд╣рд░реА рдирд┐рдордВрддреНрд░рдг рдЖрдпрд╛, рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рднреЗрдЬрд╛ рдерд╛ - INVITATION_RECEIVED
  6. рдШреВрдорддреЗ рд╣реБрдП рдХреЗрдВрджреНрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдирд┐рдордВрддреНрд░рдг - INVITATION_SEND
  7. рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ - CONNECTION_ERROR

рд╕рдВрднрд╛рд╡рд┐рдд рдШрдЯрдирд╛рдПрдВ:

  1. рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдиреЗ "рдЕрдиреБрд░реЛрдз" рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрд╛ред - OUTCOME_INVITATION
  2. рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдПрдХ рдЖрдордВрддреНрд░рдг "рдмреНрд░реЗрдХ" - OUTCOME_REJECT рднреЗрдЬрд╛
  3. рдПрдХ рдмрд╛рд╣рд░реА рдЧреНрд░рд╛рд╣рдХ рдиреЗ "рдЕрдиреБрд░реЛрдз" рдЖрдордВрддреНрд░рдг рднреЗрдЬрд╛ - INCOME_INVITATION
  4. рдмрд╛рд╣рд░реА рдЧреНрд░рд╛рд╣рдХ рдиреЗ "рдмреНрд░реЗрдХ" рдЖрдордВрддреНрд░рдг рднреЗрдЬрд╛ - INCOME_REJECT
  5. рд░реЛрдорд┐рдВрдЧ рд╕реЗрдВрдЯрд░ рдиреЗ рдирд┐рдордВрддреНрд░рдг рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ - RC_SUCCESS
  6. рд░реЛрдорд┐рдВрдЧ рдХреЗрдВрджреНрд░ рдиреЗ рдЖрдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ - RC_ERROR

рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реИред рдкрд╣рд▓рд╛ рдХреЙрд▓рдо рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИред рдЪреМрд░рд╛рд╣реЗ рдкрд░ - рдПрдХ рдирдИ рд╕реНрдерд┐рддрд┐ред

рдЫрд╡рд┐

рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐, рдпрджрд┐-рдФрд░ред рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред

рддрд░реНрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рддреЛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореИрдиреБрдЕрд▓ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдо рдмрд┐рд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░ рдмрдирд╛рдПрдВрдЧреЗ

StateMachineBuilder.Builder<ClientsState, ContractorEvent> builder = StateMachineBuilder.builder(); 

рдЕрдЧрд▓рд╛, рд╣рдо рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред

 builder.configureStates() .withStates() .initial(initialState) .states(EnumSet.allOf(ClientsState.class)); 

рд╣рдо рдХрд╛рд░ рдХреЗ рдСрдЯреЛрд╕реНрдЯрд╛рд░реНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

 builder.configureConfiguration() .withConfiguration() .autoStartup(true); 

рдЕрдЧрд▓рд╛, рд╣рдо рдЯреНрд░реИрдиреНрдЪ рд▓рд┐рдЦреЗрдВрдЧреЗред source - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐, рд▓рдХреНрд╖реНрдп - рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐, рдШрдЯрдирд╛ - рдШрдЯрдирд╛ рдЬрд┐рд╕ рдкрд░ рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдХреНрд░рд┐рдпрд╛ - рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред

 builder.configureTransitions() .withExternal() .source(NO_CONNECTION) .target(INVITATION_RECEIVED) .event(INCOME_INVITATION) .action(updateStateAction) .and() .withExternal() .source(NO_CONNECTION) .target(CONNECTION_BROKEN) .event(INCOME_REJECT) .action(updateStateAction) 

рд░рд╛рдЬреНрдп рдорд╢реАрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдИрд╡реЗрдВрдЯ рдХреЛ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рд╣реЗрдбрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВред

 StateMachine<ClientsState, ContractorEvent> sm = builder.build(); Map<String, Object> clients = new HashMap<>(); clients.put("client1", "client11"); clients.put("client2", "client22"); MessageHeaders headers = new MessageHeaders(clients); Message<ContractorEvent> message = new GenericMessage<>(event, headers); sm.sendEvent(message); sm.stop(); 

рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 @Service public class UpdateStateAction implements Action<ClientsState, ContractorEvent> { @Override public void execute(StateContext<ClientsState, ContractorEvent> context) { System.out.println("Source state: " + context.getSource()); System.out.println("Target state: " + context.getTarget()); System.out.println("Event: " + context.getEvent()); MessageHeaders headers = context.getMessageHeaders(); System.out.println(headers.get("client1")); System.out.println(headers.get("client2")); } } 

рдЖрдк рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд┐рдВрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рд░рд╛рдЬреНрдп рд╕рдВрдХреНрд░рдордг рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдпрд╣ рдЗрд╕рдХреА рд╕рднреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рдерд╛ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдпреБрдкреАрдбреА

рдЙрдкрдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╛рдордиреЗ рдЖрдИ рдереА - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ hasStateMachineError рд╡рд┐рдзрд┐ рдЧрд▓рдд рд╣реИред
рдПрдХ рдирд┐рд░реНрдгрдп рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдПрдХ AbstractAction рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, hasStateMachineError рд╕рдЪ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдЖрдЧреЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред

 @Override public void execute(StateContext<StatesEnum, OperationsEnum> context) { try { prepareContext(context); executeInternal(context); } catch (Exception e) { logger.error("  state machine", e); context.getStateMachine().setStateMachineError(e); } } 

Source: https://habr.com/ru/post/hi440788/


All Articles