2015-06-12 61 views
1

我想用jBPM 6.2創建一個BPM。該過程如下所示:我怎樣才能得到我屬於一個組的任務(jBPM 6.2)

用戶創建請求。他的經理將評估接受或拒絕。在他的經理接受的情況下,IT部門的人將執行該請求

但我無法從我所屬的組中獲得任務。在我的BPM中,人工任務被分配給IT團隊。我試圖用帳戶:salaboy,插孔(在IT部門),但我沒有看到與這些有關的任何任務,佔

下面是我的過程的截圖,你可以看到羣組標識是IT

Process

我沒有更改服務器的任何配置。這些角色看起來像:

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,它就像一個魅力

請讓我知道,如果你有任何建議

謝謝

+0

如果您向我們展示了一些代碼示例,它可能會有所幫助。理論上講,您使用RuntimeDataService.getTasksAssignedAsPotentialOwner方法,它應該返回用戶可以聲明/啓動的一組任務。你是否確認過這些用戶實際上扮演着角色? UserGroupCallback是否已正確設置? GroupID是否指定了步驟? – Mike

+1

非常感謝你,Mike,我剛剛更新了我的帖子,提供了更多信息。你可以請看看並提供建議。正如你在我的文章中看到的,我使用TaskService來獲取任務。 RunTimeDataService和TaskService有什麼不同? –

+0

我注意到Salaboy是管理員,你不是。我的想法是,你沒有在數據庫的用戶角色表中設置適當的角色。 – mcraen

回答

0

我們應該使用Workbench(網絡版)而不是E clipse。