jBPM 6.2 Как добавить пользователя, который может выполнять все задачи?

В jBPM 6.2 мы можем назначить пользовательскую задачу actor или group, чтобы они были потенциальными владельцами этих задач. Есть ли пользователь, которого мы можем определить в коде или файле bpmn, чтобы он мог выполнять все задачи пользователя независимо от того, назначена ему задача или нет?


person LifeAndHope    schedule 29.05.2015    source источник


Ответы (1)


Создайте пользователя с именем «Администратор» или используйте одного из существующих пользователей и добавьте его в группу «Администраторы». Это дает соответствующему пользователю (пользователям) доступ к задаче в качестве бизнес-администратора. Это должно работать для большинства ваших требований.

Если у вас возникнут какие-либо проблемы с этим подходом, другой вариант может состоять в том, чтобы реализовать собственное поведение при назначении задач в «Личном задании» WorkItemHandler, но давайте сначала попробуем подход, упомянутый выше.

В соответствии с запросом пример кода этого подхода:

  1. Реализуйте класс test.CustomHTWorkItemHandler, который расширяет LocalHTWorkItemHandler (https://github.com/droolsjbpm/jbpm/blob/master/jbpm-human-task/jbpm-human-task-workitems/src/main/java/org/jbpm/services/task/wih/LocalHTWorkItemHandler.java).
  2. Дайте ему новый консуктор:

    public CustomHTWorkItemHandler(RuntimeManager runtimeManager){
           super.setRuntimeManager(runtimeManager);
    }
    
  3. Метод переопределения createTaskBasedOnWorkItemParams:

    protected Task createTaskBasedOnWorkItemParams(KieSession session, WorkItem workItem) {
           InternalTask task =(InternalTask)super.createTaskBasedOnWorkItemParams(session,workItem);
           Group adminGroup = TaskModelProvider.getFactory().newGroup();
           ((InternalOrganizationalEntity) adminGroup).setId("MySpecialAdminGroup");        
           task.getPeopleAssignments().getBusinessAdministrators().add(adminGroup);
           return task;
    }     
    
  4. в XML-файле дескриптора развертывания зарегистрируйте новый CustomHTWorkItemHandler:

    <work-item-handler>
           <resolver>mvel</resolver>
           <identifier>new test.CustomHTWorkItemHandler(runtimeManager)</identifier>
             <name>Human Task</name>
    </work-item-handler>
    
person Ampie Barnard    schedule 31.05.2015
comment
Не могли бы вы объяснить часть о реализации пользовательского поведения при назначении задач? У вас есть пример кода о том, как это сделать? - person LifeAndHope; 03.06.2015
comment
Спасибо Ампи за пример. Это очень полезно. В качестве дополнительного вопроса, если вы не возражаете, как мы можем использовать этот пользовательский обработчик задач, выполняемых человеком, на диаграмме модели jbpm? Другими словами, предположим, что у меня есть пользовательская задача на диаграмме модели jbpm 6, как я могу использовать этот пользовательский обработчик для пользовательской задачи? Я попытался зарегистрировать пользовательский обработчик рабочего элемента неавтоматизированной задачи в файле kmodule.xml, но он не регистрируется jBPM. - person LifeAndHope; 05.06.2015
comment
Плохо, я использовал синтаксис дескриптора развертывания при обращении к файлу kmodule. Я изменил ответ. Попробуйте иллюстрированный тег work-item-handler в XML-дескрипторе развертывания (docs.jboss.org/jbpm/v6.1/userguide/). К сожалению, на данный момент я не могу проверить это самостоятельно, но дайте мне знать, если у вас возникнут проблемы. - person Ampie Barnard; 14.06.2015