/** * Updates the specified {@link TaskMessage} with the specified subtask identifier. */ private static void updateTaskId(final TaskMessage responseMessage, final int subtaskId, final boolean isFinalResponse) { // Put together the suffix to be added final String subtaskSuffix; { final StringBuilder builder = new StringBuilder(); builder.append('.'); builder.append(subtaskId); if (isFinalResponse) { builder.append('*'); } subtaskSuffix = builder.toString(); } // Update the task id responseMessage.setTaskId(responseMessage.getTaskId() + subtaskSuffix); // Update the tracking info final TrackingInfo taskMessageTracking = responseMessage.getTracking(); if (taskMessageTracking != null) { final String trackingTaskId = taskMessageTracking.getJobTaskId(); if (trackingTaskId != null) { final TrackingInfo trackingInfo = new TrackingInfo(taskMessageTracking); trackingInfo.setJobTaskId(trackingTaskId + subtaskSuffix); responseMessage.setTracking(trackingInfo); } } }
private static TaskMessage buildTaskMessage(Document document, long workflowId, String projectId, String storageDirectory) throws CodecException { TaskData taskData = new TaskData(); taskData.setDocument(document); taskData.setOutputPartialReference(storageDirectory); taskData.setWorkflowId(String.valueOf(workflowId)); taskData.setExecutePolicyOnClassifiedDocuments(true); taskData.setProjectId(projectId); byte[] serializedTaskData = codec.serialise(taskData); TaskMessage taskMessage = new TaskMessage(); taskMessage.setTaskData(serializedTaskData); taskMessage.setContext(new HashMap<>()); taskMessage.setTaskId(String.valueOf(messageCount.addAndGet(1)) + "-" + document.getReference()); taskMessage.setTaskClassifier("PolicyWorker"); taskMessage.setTaskApiVersion(1); taskMessage.setTaskStatus(TaskStatus.NEW_TASK); taskMessage.setTo(destinationQueue); return taskMessage; } }