* @param workListener Work listener for callbacks.
* @return Work Work item representing the asynchronous work
*/
public WorkItem schedule(Work work, WorkListener workListener) throws WorkRejectedException {
DefaultWorkItem workItem = new DefaultWorkItem(new UID().toString(), work);
if (workListener != null) {
workItems.put(workItem, workListener);
}
workAccepted(workItem, work);
if (scheduleWork(work, workItem)) {