Рабочий процесс не пересылается после пользовательской задачи в jbpm5 - PullRequest
0 голосов
/ 31 января 2012

У меня есть пользовательская задача в рабочем процессе. Я в состоянии выполнить задачу человека, но поток не продвигается дальше. Без каких-либо исключений поток останавливается там, другие задачи, следующие за пользовательской задачей, не выполняются.

Пожалуйста, помогите мне в этом отношении. 1. Могут ли быть какие-либо изменения конфигурации, необходимые для jbpm5.0. 2. Есть ли что-то еще, что мне не хватает.

      KnowledgeBase kbase = readKnowledgeBase("taskprocess.rf");
        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        /*Create the knowledge base for HelloProcss.bpmn */

        KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, "testlog", 1000);
        CommandBasedWSHumanTaskHandler taskHandler = new CommandBasedWSHumanTaskHandler(ksession);
        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", taskHandler);
        //JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession);
        //taskHandler.connect();

        System.out.println(" started the humantask");
        ksession.startProcess("persistask");    
        ksession.fireAllRules();

Ответы [ 3 ]

1 голос
/ 31 января 2012

Это происходит из-за того, что поток, который регистрирует обработчик неавтоматизированных задач, умер (ksession.getWorkItemManager (). RegisterWorkItemHandler ("Human Task", taskHandler);) Вам необходим глобальный сеанс с прикрепленным обработчиком Human Task, который прослушивает компонент Human Task для уведомления о завершении задачи.

Приветствия

0 голосов
/ 22 февраля 2012

Нам нужно добавить имя пользователя администратора в «TaskServiceSession»

         taskSession.addUser(new User("administrator")); 

При этом рабочий процесс прогрессирует и завершает оставшиеся задачи после выполнения пользовательской задачи. Вы должны иметь роль администратора для запуска любого процесса. Это требование

0 голосов
/ 31 января 2012

Не могли бы вы уточнить, как вы выполняете задачу, например, используете ли вы Eclipse или веб-клиент? А что происходит в вашем основном классе после запуска процесса, он просто завершается? В этом случае Салабой, вероятно, прав, поскольку поток, который создал задачу и выполняет процесс, вероятно, уже умер до того, как вы завершили задачу, поэтому он не будет продолжать выполнение.

Добавление длинного Thread.sleep в ваш основной класс, вероятно, позволит вам продолжить выполнение для тестирования.

...