JBoss Community

Re: Could not getting tasks for business administrators through task client

created by Maciej Swiderski in jBPM - View the full discussion

No, it fact the problem was that you used getTasksAssignedAsPotentialOwner method instead of one dedicated to get tasks assigned as business user, see in bold:

 

tom sebastian wrote:

 

This was my class.

 

public class BusinessAdminTest {

 

 

          private static final long DEFAULT_WAIT_TIME = 10000l;

          private TaskClient client;

          private WorkItemManager manager;

          private String ipAddress="192.168.1.111";

          private int port=9123;

 

          private void createClient() {

                    if (client == null) {

                              client = new TaskClient(new MinaTaskClientConnector("com.task.BusinessAdminTest",

                                                                                                    new MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener())));

                              boolean connected = client.connect(ipAddress, port);

                              if (!connected) {

                                        throw new IllegalArgumentException("Could not connect task client");

                              }

                    }

          }

          public void test() throws Throwable{

 

 

 

                    // Create the task

                    //assumed testGroup contain 'Mary','John' users

                    Task task1 = createTask("TaskName", "Comment","Tom","testGroup");

                    BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();

                    client.addTask(task1, null, null);

 

 

                    Thread.sleep(500);

 

                    // Test if the task is successfully created

                    BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();

                    client.getTasksAssignedAsPotentialOwner("Tom", "en-UK",

                                        responseHandler);

                    responseHandler.waitTillDone(DEFAULT_WAIT_TIME);

                    List tasks = responseHandler.getResults();

                    if(tasks!=null){

                              System.out.println(tasks.size());

                              TaskSummary summary=(TaskSummary) tasks.get(0);

                              System.out.println(summary.getStatus().toString());//will be 'Ready'

 

                    }

                    //Try to get task as business administrator

                    responseHandler = new BlockingTaskSummaryResponseHandler();

                    client.getTasksAssignedAsPotentialOwner("administrator", "en-UK",

                                        responseHandler);

                    responseHandler.waitTillDone(DEFAULT_WAIT_TIME);

                    tasks = responseHandler.getResults();

                    if(tasks!=null){// according to WS specification, we expect to get task

                              System.out.println(tasks.size());

                              TaskSummary summary=(TaskSummary) tasks.get(0);

                              System.out.println(summary.getStatus().toString());

 

                    }

 

          }

          public TaskClient getClient() {

                    return client;

          }

          public void setClient(TaskClient client) {

                    this.client = client;

          }

          private Task createTask(String taskName, String comment, String actorId,String groupId) {

                    Task task = new Task();

                    if (taskName != null) {

                              List names = new ArrayList();

                              names.add(new I18NText("en-UK", taskName));

                              task.setNames(names);

                    }

                    if (comment != null) {

                              List descriptions = new ArrayList();

                              descriptions.add(new I18NText("en-UK", comment));

                              task.setDescriptions(descriptions);

                              List subjects = new ArrayList();

                              subjects.add(new I18NText("en-UK", comment));

                              task.setSubjects(subjects);

                    }

                    task.setPriority(10);

 

 

                    TaskData taskData = new TaskData();

 

 

 

                    PeopleAssignments assignments = new PeopleAssignments();

                    List potentialOwners = new ArrayList();

 

 

                    if (actorId != null && actorId.trim().length() > 0) {

 

                                        potentialOwners.add(new User(actorId.trim()));

                              }

                    if (groupId != null && groupId.trim().length() > 0) {

 

                                        potentialOwners.add(new Group(groupId.trim()));

 

                    }

                    // Set the first user as creator ID??? hmmm might be wrong

                              if (potentialOwners.size() > 0) {

                                        taskData.setCreatedBy((User) potentialOwners.get(0));

                              }

 

                    assignments.setPotentialOwners(potentialOwners);

                    List businessAdministrators = new ArrayList();

                    businessAdministrators.add(new User("administrator"));

                    assignments.setBusinessAdministrators(businessAdministrators);

                    task.setPeopleAssignments(assignments);

 

                    taskData.setSkipable(true);

 

                    task.setTaskData(taskData);

 

                    return task;

          }

 

          public void setManager(WorkItemManager manager) {

                    this.manager = manager;

          }

          public WorkItemManager getManager() {

                    return manager;

          }

 

          public static void main(String[] a){

                    BusinessAdminTest baTest = new BusinessAdminTest();

                    baTest.createClient();

                    try {

                              baTest.test();

                    } catch (Throwable e) {

                              // TODO Auto-generated catch block

                              e.printStackTrace();

                    }

          }

}

 

 

 

 

 

 

When i run this ,the output was(the first 2 lines indicate the number of tasks and its status as potential owner, while the remaining as business admin for the same task)

 

1

Ready

0

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

Reply to this message by going to Community

Start a new discussion in jBPM at Community