--- drools_manipura_src/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java 2010-07-27 05:02:04.000000000 +0200 +++ drools_src/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java 2010-10-13 12:11:02.000000000 +0200 @@ -22,6 +22,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.HashMap; +import java.util.Arrays; +import java.io.*; import org.drools.SystemEventListenerFactory; import org.drools.process.workitem.wsht.BlockingGetTaskResponseHandler; @@ -39,11 +42,12 @@ import org.jboss.bpm.console.server.integration.TaskManagement; public class DroolsFlowTaskManagement implements TaskManagement { - + // TODO: make this configurable private String ipAddress = "127.0.0.1"; private int port = 9123; private TaskClient client; + private HashMap groupListMap = new HashMap(); public void setConnection(String ipAddress, int port) { this.ipAddress = ipAddress; @@ -55,10 +59,30 @@ client = new TaskClient(new MinaTaskClientConnector("org.drools.process.workitem.wsht.WSHumanTaskHandler", new MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener()))); boolean connected = client.connect(ipAddress, port); + if (!connected) { throw new IllegalArgumentException( "Could not connect task client"); } + + try { + FileInputStream fstream = new FileInputStream("jboss-4.2.3.GA/server/default/conf/roles.properties"); + DataInputStream in = new DataInputStream(fstream); + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + + String strLine; + while ((strLine = br.readLine()) != null) { + String[] tmp; + tmp = strLine.split("="); + + groupListMap.put(tmp[0], tmp[1]); + } + + in.close(); + + } catch (Throwable t) { + t.printStackTrace(); + } } } @@ -76,7 +100,7 @@ if (idRef == null) { client.release(taskId, userId, responseHandler); } else if (idRef.equals(userId)) { - client.claim(taskId, idRef, responseHandler); + client.claim(taskId, idRef, Arrays.asList(groupListMap.get(idRef).split(",")), responseHandler); } else { client.delegate(taskId, userId, idRef, responseHandler); } @@ -148,7 +172,7 @@ List result = new ArrayList(); try { BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler(); - client.getTasksAssignedAsPotentialOwner(idRef, "en-UK", responseHandler); + client.getTasksAssignedAsPotentialOwner(idRef, Arrays.asList(groupListMap.get(idRef).split(",")), "en-UK", responseHandler); List tasks = responseHandler.getResults(); for (TaskSummary task: tasks) { result.add(DroolsFlowTransform.task(task));