Java: конечные автоматы

Java, Work Add comments

Сегодня сделал такую простую машину состояний, так вроде оно называется. Что называется, попробуйте немножко лиспа :-) Зачем это нужно - если есть набор правил, и нужно согласно с этими правилами что-то делать то либо нужно писать многоуровневый IF-ELSE-IF-ELSE либо сделать FSM.

Многоэтажные конструкции IF-ELSE-IF-ELSE просто писать, но сложно читать. И упаси боже через неделю придется покопаться в правилах. FSM легко определить и легко потом читать изменять, но нужен тот собственный черный ящик который будет правила исполнять. Кстати по правилам легко генерировать картинки (слева), ещё более упрощая понимание. Вычленил свой код а крохотную библиотечку, сначала думал может статейку какую написать простенькую, а сейчас уже остыл, может и не надо это никому.

Вот собственно код который поясняет эта диаграмма

Вместо “мяса” реализации логики тут везде null

        Node countTimeOutStatementNode = new StatementNodeAdaptor("countTimeout", "orderCheck", null);
        Node countOrderFailureStatementNode = new StatementNodeAdaptor("countOrderFailure", "countTotal", null);
        Node countTotalStatementNode = new StatementNodeAdaptor("countTotal", RuleProcessor.EndNode.getName(), null);
        Node countOKStatementNode = new StatementNodeAdaptor("countOK", "countTotal", null);

        Node timeOutCheckNode = new CheckNodeAdaptor("timeOutCheck", "countTimeout", "notOrderCheck", null);
        Node orderCheckNode = new CheckNodeAdaptor("orderCheck", "countOrderFailure", "countTotal", null);
        Node notOrderCheckNode = new CheckNodeAdaptor("notOrderCheck", "countOK", "countOrderFailure", null);


Похожие записи:

2 Responses to “Java: конечные автоматы”

  1. alekro Says:

    Агаси, а еще есть разные способы имплементации. Я предпочитаю строить мапу переходов, но не всегда это проходит.
    Писать статью..ну, тема довольно избитая, чем гря..

  2. katren Says:

    ну вот, хорошо что не стал :-)

Leave a Reply

Entries RSS Comments RSS Log in Admin