private void startAndShow(String userid, WorkItemRecord wir) { String errMsg = null; WorkItemRecord startedItem = null; Participant p = rm.getParticipantFromUserID(userid); if (wir.hasStatus(WorkItemRecord.statusEnabled) || wir.hasStatus(WorkItemRecord.statusFired)) { if (wir.hasResourceStatus(WorkItemRecord.statusResourceOffered) || wir.hasResourceStatus(WorkItemRecord.statusResourceUnoffered)) { errMsg = checkParticipantHasQueuedItem(p, wir, WorkQueue.OFFERED); if (successful(errMsg)) { errMsg = null; wir = rm.acceptOffer(p, wir); if (wir.hasStatus(WorkItemRecord.statusExecuting)) { // system start startedItem = wir; } } } if ((errMsg == null) && (startedItem == null)) { if (wir.hasResourceStatus(WorkItemRecord.statusResourceAllocated)) { errMsg = checkParticipantHasQueuedItem(p, wir, WorkQueue.ALLOCATED); if (successful(errMsg)) { errMsg = null; if (rm.start(p, wir)) { startedItem = rm.getExecutingChild(wir); } else { errMsg = "Could not start workitem '" + wir.getID() + "'. Please see the log files for details."; } } } else { errMsg = "Could not allocate workitem '" + wir.getID() + "'. Please see the log files for details."; } } } else { if (wir.hasResourceStatus(WorkItemRecord.statusResourceSuspended)) { errMsg = checkParticipantHasQueuedItem(p, wir, WorkQueue.SUSPENDED); if (successful(errMsg)) { errMsg = null; rm.unsuspendWorkItem(p, wir); } } if (errMsg == null) { errMsg = checkParticipantHasQueuedItem(p, wir, WorkQueue.STARTED); if (successful(errMsg)) { errMsg = null; startedItem = wir; } } } if ((errMsg == null) && (startedItem == null)) { errMsg = "Could not start workitem '" + wir.getID() + "'. Please see the log files for details."; } if (errMsg != null) { showMessage(errMsg); } else { showForm(startedItem); } }