Refine search
public void processTaskState(Task task) { long workItemId = task.getTaskData().getWorkItemId(); if (task.getTaskData().getStatus() == Status.Completed) { String userId = task.getTaskData().getActualOwner().getId(); Map<String, Object> results = new HashMap<String, Object>(); long contentId = task.getTaskData().getOutputContentId(); if (contentId != -1) { Content content = taskService.getContentById(contentId); Object result = ContentMarshallerHelper.unmarshall(content.getContent(), ksession.getEnvironment(), ksession.getClass().getClassLoader()); results.put("Result", result); if (result instanceof Map) {
@Override public Task setFaultToTask(Content content, FaultData faultData, Task task) { Long id = 0L; if (content != null) { id = content.getId(); } ((InternalTaskData) task.getTaskData()).setFault(id, faultData); return task; }
@SuppressWarnings("unchecked") public void initialize(Content content) { if( content == null || content.getId() == -1) { return; } this.id = content.getId(); this.content = content.getContent(); if( content instanceof JaxbContent ) { this.contentMap = ((JaxbContent) content).getContentMap(); } else { try { Object unmarshalledContent = ContentMarshallerHelper.unmarshall(content.getContent(), null); if( unmarshalledContent != null && unmarshalledContent instanceof Map ) { contentMap = (Map<String, Object>) unmarshalledContent; } } catch (Exception e) { // don't fail in case of unmarshalling problem as it might be content not handled via jaxb // Ļe.g. custom classes, non map based etc } } }
@SuppressWarnings("unchecked") public long addOutputContent(long taskId, Map<String, Object> params) { Task task = persistenceContext.findTask(taskId); loadTaskVariables(task); long outputContentId = task.getTaskData().getOutputContentId(); Content outputContent = persistenceContext.findContent(outputContentId); Content content = TaskModelProvider.getFactory().newContent(); ((InternalContent) content).setContent(outputContentData.getContent()); persistenceContext.persistContent(content); persistenceContext.setOutputToTask(content, outputContentData, task); contentId = content.getId(); } else { Object unmarshalledObject = ContentMarshallerHelper.unmarshall(outputContent.getContent(), context.getEnvironment(), context.getClassloader()); if(unmarshalledObject != null && unmarshalledObject instanceof Map){ ((InternalTaskData)task.getTaskData()).setTaskOutputVariables(params); taskEventSupport.fireAfterTaskOutputVariablesChanged(task, context, params); persistenceContext.updateTask(task);
getHandler().executeWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(1, tasks.size()); TaskSummary taskSummary = tasks.get(0); assertEquals("Darth Vader", taskSummary.getActualOwner().getId()); Task task = taskService.getTaskById(taskSummary.getId()); assertEquals(AccessType.Inline, ((InternalTaskData) task.getTaskData()).getDocumentAccessType()); assertEquals(task.getTaskData().getProcessSessionId(), TestStatefulKnowledgeSession.testSessionId.intValue()); long contentId = task.getTaskData().getDocumentContentId(); assertTrue(contentId != -1); taskService.getContentById(contentId).getContent(), ksession.getEnvironment()); assertEquals("This is the content", data);
@Test public void testCompleteWithResults() { // One potential owner, should go straight to state Reserved String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet'), new User('Darth Vader') ], businessAdministrators = [ new User('Administrator') ],}),"; str += "name = 'This is my task name' })"; Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); // Go straight from Ready to Inprogress taskService.start(taskId, "Darth Vader"); Task task1 = taskService.getTaskById(taskId); assertEquals(Status.InProgress, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); Map<String, Object> params = new HashMap<String, Object>(); params.put("content", "content"); taskService.complete(taskId, "Darth Vader", params); Task task2 = taskService.getTaskById(taskId); assertEquals(AccessType.Inline, ((InternalTaskData) task2.getTaskData()).getOutputAccessType()); assertEquals("java.util.HashMap", task2.getTaskData().getOutputType()); long contentId = task2.getTaskData().getOutputContentId(); assertTrue(contentId != -1); Content content = taskService.getContentById(contentId); Map<String, Object> unmarshalledObject = (Map<String, Object>) ContentMarshallerHelper.unmarshall(content.getContent(), null); assertEquals("content", unmarshalledObject.get("content")); }
@Test public void testNewTaskWithContent() { String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ],businessAdministrators = [ new User('Administrator') ], }),"; str += "name = 'This is my task name' })"; ContentData data = ContentMarshallerHelper.marshal(null, "content", null); Task task = TaskFactory.evalTask(new StringReader(str)); taskService.addTask(task, data); long taskId = task.getId(); // Task should be assigned to the single potential owner and state set to Reserved Task task1 = taskService.getTaskById(taskId); assertEquals(AccessType.Inline, ((InternalTaskData) task1.getTaskData()).getDocumentAccessType()); assertEquals("java.lang.String", task1.getTaskData().getDocumentType()); long contentId = task1.getTaskData().getDocumentContentId(); assertTrue(contentId != -1); Content content = taskService.getContentById(contentId); Object unmarshalledObject = ContentMarshallerHelper.unmarshall(content.getContent(), null); assertEquals("content", unmarshalledObject.toString()); xmlRoundTripContent(content); }
taskService.addTask(task, new HashMap<String, Object>()); long taskId = task.getId(); assertEquals(Status.InProgress, task1.getTaskData().getStatus()); assertEquals("Darth Vader", task1.getTaskData().getActualOwner().getId()); assertEquals(Status.Failed, task2.getTaskData().getStatus()); assertEquals(AccessType.Inline, ((InternalTaskData) task2.getTaskData()).getFaultAccessType()); assertEquals("type", task2.getTaskData().getFaultType()); Map<String, Object> unmarshalledContent = (Map<String, Object>) ContentMarshallerHelper.unmarshall(content.getContent(), null); assertEquals("content", unmarshalledContent.get("content")); xmlRoundTripContent(content); String updated = new String(content.getContent()); assertEquals("updated content", updated);
taskService.addTask( task, data ); long taskId = task.getId(); assertEquals( AccessType.Inline, ((InternalTaskData) task1.getTaskData()).getDocumentAccessType() ); assertEquals( "java.util.HashMap", task1.getTaskData().getDocumentType() ); long contentId = task1.getTaskData().getDocumentContentId(); assertTrue( contentId != -1 ); Object unmarshalledObject = ContentMarshallerHelper.unmarshall(content.getContent(), null); if(!(unmarshalledObject instanceof Map)){ fail("The variables should be a Map"); assertEquals(Status.InProgress, task1.getTaskData().getStatus()); Content contentById = taskService.getContentById(outputContentId); unmarshalledObject = ContentMarshallerHelper.unmarshall(contentById.getContent(), null); assertNotNull(unmarshalledObject); if(!(unmarshalledObject instanceof Map)){
Task task = persistenceContext.findTask(taskId); Deadline deadline = persistenceContext.findDeadline(deadlineId); if (task == null || deadline == null) { return null; TaskData taskData = task.getTaskData(); if (type.isValidStatus(taskData.getStatus())) { Map<String, Object> variables = null; Content content = persistenceContext.findContent(taskData.getDocumentContentId()); Object objectFromBytes = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader()); ((InternalTaskData) task.getTaskData()).setStatus(Status.Ready); ((InternalPeopleAssignments) task.getPeopleAssignments()).setPotentialOwners(potentialOwners); ((InternalTaskData) task.getTaskData()).setActualOwner(null);
taskService.claim(HRInterview.getId(), "katy"); taskService.start(HRInterview.getId(), "katy"); hrOutput.put("out_score", 8); taskService.complete(HRInterview.getId(), "katy", hrOutput); TaskSummary techInterview = tasks.get(0); Task techInterviewTask = taskService.getTaskById(techInterview.getId()); Content contentById = taskService.getContentById(techInterviewTask.getTaskData().getDocumentContentId()); assertNotNull(contentById); Map<String, Object> taskContent = (Map<String, Object>) ContentMarshallerHelper.unmarshall(contentById.getContent(), null); Task createProposalTask = taskService.getTaskById(createProposal.getId()); contentById = taskService.getContentById(createProposalTask.getTaskData().getDocumentContentId()); assertNotNull(contentById); taskContent = (Map<String, Object>) ContentMarshallerHelper.unmarshall(contentById.getContent(), null); Task signContractTask = taskService.getTaskById(signContract.getId()); contentById = taskService.getContentById(signContractTask.getTaskData().getDocumentContentId()); assertNotNull(contentById); taskContent = (Map<String, Object>) ContentMarshallerHelper.unmarshall(contentById.getContent(), null);
String processAssetPath = ""; Path processPath = null; if(task.getTaskData().getProcessId() != null && !task.getTaskData().getProcessId().equals("") ){ processAssetPath = dataService.getProcessById(task.getTaskData().getProcessId()).getOriginalPath(); if (inputContentId != -1) { Content content = contentService.getContentById(inputContentId); input = ContentMarshallerHelper.unmarshall(content.getContent(), null); if (outputContentId != -1) { Content content = contentService.getContentById(outputContentId); output = ContentMarshallerHelper.unmarshall(content.getContent(), null);
public void deleteOutput(long taskId, String userId) { Task task = persistenceContext.findTask(taskId); long contentId = task.getTaskData().getOutputContentId(); Content content = persistenceContext.findContent(contentId); Map<String, Object> initialContent = new HashMap<>(); ContentMarshallerContext context = TaskContentRegistry.get().getMarshallerContext(task); Object unmarshalledObject = ContentMarshallerHelper.unmarshall(content.getContent(), context.getEnvironment(), context.getClassloader()); if(unmarshalledObject != null && unmarshalledObject instanceof Map){ // set initial content before updating with this params initialContent.putAll((Map<String, Object>)unmarshalledObject); } taskEventSupport.fireBeforeTaskOutputVariablesChanged(task, this.context, initialContent); ContentData data = TaskModelProvider.getFactory().newContentData(); persistenceContext.removeContent(content); persistenceContext.setOutputToTask(null, data, task); taskEventSupport.fireAfterTaskOutputVariablesChanged(task, this.context, null); }
public Long execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; Attachment attachmentImpl = attachment; if (attachmentImpl == null) { attachmentImpl = jaxbAttachment; } Content contentImpl = content; if (contentImpl == null) { contentImpl = jaxbContent; } if (rawContent != null && contentImpl == null) { Task task = context.getPersistenceContext().findTask(taskId); contentImpl = TaskModelProvider.getFactory().newContent(); ContentMarshallerContext ctx = TaskContentRegistry.get().getMarshallerContext(task.getTaskData().getDeploymentId()); ((InternalContent)contentImpl).setContent(ContentMarshallerHelper.marshallContent(task, rawContent, ctx.getEnvironment())); ((InternalAttachment)attachmentImpl).setSize(contentImpl.getContent().length); } doCallbackOperationForAttachment(attachmentImpl, context); return context.getTaskAttachmentService().addAttachment(taskId, attachmentImpl, contentImpl); }
@Override public Map<String, Object> getContentMapForUser( Long taskId, String userId ) { // check permissions this.lifeCycleManager.taskOperation(Operation.View, taskId, userId, null, null, toGroups(null)); Task task = this.persistenceContext.findTask(taskId); if( task.getTaskData() != null && task.getTaskData().getOutputContentId() != null ) { Content content = this.persistenceContext.findContent(task.getTaskData().getOutputContentId()); ContentMarshallerContext mContext = TaskContentRegistry.get().getMarshallerContext(task); Object outputContent = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader()); if( outputContent instanceof Map ) { return (Map<String, Object>) outputContent; } else { throw new IllegalStateException("Output content for task " + taskId + " is not a Map<String, Object>!"); } } return null; }
@SuppressWarnings("unchecked") public Map<String, Object> execute(Context cntxt ) { TaskContext context = (TaskContext) cntxt; Task taskById = context.getTaskQueryService().getTaskInstanceById(taskId); if (taskById == null) { throw new IllegalStateException("Unable to find task with id " + taskId); } TaskContentService contentService = context.getTaskContentService(); Content contentById = contentService.getContentById(taskById.getTaskData().getDocumentContentId()); ContentMarshallerContext mContext = contentService.getMarshallerContext(taskById); Object unmarshalledObject = ContentMarshallerHelper.unmarshall(contentById.getContent(), mContext.getEnvironment(), mContext.getClassloader()); if (!(unmarshalledObject instanceof Map)) { logger.debug(" The Task Content is not of type Map, it was: {} so packaging it into new map under Content key ", unmarshalledObject.getClass()); Map<String, Object> content = new HashMap<String, Object>(); content.put("Content", unmarshalledObject); return content; } Map<String, Object> content = (Map<String, Object>) unmarshalledObject; return content; }
protected Map<String, Object> getTaskOutput(Task task) { long documentContentId = task.getTaskData().getOutputContentId(); if (documentContentId > 0) { Content contentById = taskService.getContentById(documentContentId); if (contentById == null) { return new HashMap<String, Object>(); } Object unmarshall = ContentMarshallerHelper.unmarshall(contentById.getContent(), null); return (Map<String, Object>) unmarshall; } return new HashMap<String, Object>(); } }
public long setDocumentContent(long taskId, Content content) { Task task = persistenceContext.findTask(taskId); persistenceContext.persistContent(content); ((InternalTaskData) task.getTaskData()).setDocumentContentId(content.getId()); return content.getId(); }
@SuppressWarnings("unchecked") private Map<String, Object> getVariables(TaskContext ctx, TaskPersistenceContext persistenceContext, Task task, TaskData taskData) { Map<String, Object> variables; Content content = persistenceContext.findContent(taskData.getDocumentContentId()); if (content != null) { ContentMarshallerContext mContext = ctx.getTaskContentService().getMarshallerContext(task); Object objectFromBytes = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader()); if (objectFromBytes instanceof Map) { variables = (Map<String, Object>) objectFromBytes; } else { variables = new HashMap<String, Object>(); variables.put("content", objectFromBytes); } } else { variables = Collections.emptyMap(); } return variables; }
@SuppressWarnings("unchecked") protected Map<String, Object> loadContentData(Long contentId, Task task) { if (contentId != null) { Map<String, Object> data = null; Content contentById = getContentById(contentId); if (contentById != null) { ContentMarshallerContext mContext = getMarshallerContext(task); Object unmarshalledObject = ContentMarshallerHelper.unmarshall(contentById.getContent(), mContext.getEnvironment(), mContext.getClassloader()); if (!(unmarshalledObject instanceof Map)) { data = new HashMap<String, Object>(); data.put("Content", unmarshalledObject); } else { data = (Map<String, Object>) unmarshalledObject; } return data; } } return null; } }