Apache SCXML: добавить пользовательское действие

Я работаю с Apache Commons SCXML 0.9 и не могу найти, как добавить CustomAction. Я нашел примеры использования v2.0-SNAPSHOT (который, кстати, я не знаю, где его взять), но кажется, что он не работает на v0.9, поэтому я получил что-то вроде этого:

CustomAction customAction = new CustomAction("http://my.custom-actions.domain/CUSTOM", "my", MyCustomAction.class);
List<CustomAction> customActions = new ArrayList<CustomAction>();
customActions.add(customAction);


Для v2.0-SNAPSHOT я мог написать:

SCXML scxml = SCXMLTestHelper.parse("path/to/my/sm.xml", customActions);

и после этого получите SCXMLExecutor и позвонить SCXMLExecutor.go метод, но я не могу найти какой-либо вариант для v0.9, пожалуйста, мне нужна ваша помощь здесь.
С наилучшими пожеланиями

1 ответ

Решение

Ну, я думаю, я понял, я нашел этот пост, где есть полный пример (на испанском языке) с использованием SCXML v0.9.
Вот код, который я написал, чтобы добавить пользовательское действие onExit:

MyCustomAction mca = new MyCustomAction();//MyCustomAction extends org.apache.commons.scxml.model.Action
State state = (State) getEngine().getStateMachine().getTargets().get("yourstate");
OnExit oex = state.getOnExit();
oex.addAction(mca);
state.setOnExit(oex);

и если вы хотите зарегистрировать onEntry действие, почти то же самое

MyCustomAction mca = new MyCustomAction();//MyCustomAction extends org.apache.commons.scxml.model.Action
MyCustomAction2 mca2 = new MyCustomAction2();//MyCustomAction2 extends org.apache.commons.scxml.model.Action
State state = (State) getEngine().getStateMachine().getTargets().get("yourstate");
OnEntry oe = state.getOnEntry();
oe.addAction(mca);
oe.addAction(mca2);
state.setOnEntry(oe);
Другие вопросы по тегам