1
我想用jBPM 6.2創建一個BPM。該過程如下所示:我怎樣才能得到我屬於一個組的任務(jBPM 6.2)
用戶創建請求。他的經理將評估接受或拒絕。在他的經理接受的情況下,IT部門的人將執行該請求
但我無法從我所屬的組中獲得任務。在我的BPM中,人工任務被分配給IT團隊。我試圖用帳戶:salaboy,插孔(在IT部門),但我沒有看到與這些有關的任何任務,佔
下面是我的過程的截圖,你可以看到羣組標識是IT
我沒有更改服務器的任何配置。這些角色看起來像:
admin=admin,analyst,kiemgmt
krisv=admin,analyst
john=analyst,Accounting,PM
mary=analyst,HR
sales-rep=analyst,sales
jack=analyst,IT
katy=analyst,HR
salaboy=admin,analyst,IT,HR,Accounting
測試的代碼是:
public static void main(String[] args) {
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieBase kbase = kContainer.getKieBase("kbase");
RuntimeManager manager = createRuntimeManager(kbase);
RuntimeEngine engine = manager.getRuntimeEngine(null);
KieSession ksession = engine.getKieSession();
TaskService taskService = engine.getTaskService();
ksession.startProcess("com.sample.bpmn.hello");
// let john execute Task 1
List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
TaskSummary task = list.get(0);
System.out.println("John is executing task " + task.getName());
taskService.start(task.getId(), "john");
taskService.complete(task.getId(), "john", null);
// let mary execute Task 2
list = taskService.getTasksAssignedAsPotentialOwner("mary", "en-UK");
task = list.get(0);
System.out.println("Mary is executing task " + task.getName());
taskService.start(task.getId(), "mary");
Map<String, Object> params = new HashMap<>();
params.put("output", true);
taskService.complete(task.getId(), "mary", params);
// let salaboy execute Task 3
list = taskService.getTasksAssignedAsPotentialOwner("salaboy", "en-UK");
task = list.get(0);
System.out.println("salaboy is executing task " + task.getName());
taskService.start(task.getId(), "salaboy");
taskService.complete(task.getId(), "salaboy", null);
manager.disposeRuntimeEngine(engine);
System.exit(0);
}
private static RuntimeManager createRuntimeManager(KieBase kbase) {
JBPMHelper.startH2Server();
JBPMHelper.setupDataSource();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get()
.newDefaultBuilder().entityManagerFactory(emf)
.knowledgeBase(kbase);
return RuntimeManagerFactory.Factory.get()
.newSingletonRuntimeManager(builder.get(), "com.sample:example:1.0");
}
如果我分配實施任務salaboy,它就像一個魅力
請讓我知道,如果你有任何建議
謝謝
如果您向我們展示了一些代碼示例,它可能會有所幫助。理論上講,您使用RuntimeDataService.getTasksAssignedAsPotentialOwner方法,它應該返回用戶可以聲明/啓動的一組任務。你是否確認過這些用戶實際上扮演着角色? UserGroupCallback是否已正確設置? GroupID是否指定了步驟? – Mike
非常感謝你,Mike,我剛剛更新了我的帖子,提供了更多信息。你可以請看看並提供建議。正如你在我的文章中看到的,我使用TaskService來獲取任務。 RunTimeDataService和TaskService有什麼不同? –
我注意到Salaboy是管理員,你不是。我的想法是,你沒有在數據庫的用戶角色表中設置適當的角色。 – mcraen