@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; } }
public ContentMarshallerContext getMarshallerContext(String deploymentId) { if (deploymentId != null && this.marhsalContexts.containsKey(deploymentId)) { return this.marhsalContexts.get(deploymentId); } return new ContentMarshallerContext(); } }
private ModelProperty generateModelProperty(String name, String type, ProcessRenderingSettings settings) { return BPMNVariableUtils.generateVariableProperty(name, type, settings.getMarshallerContext().getClassloader()); }
public static void rescheduleDeadlinesForTask(final InternalTask task, TaskContext taskContext, DeadlineType ...types) { Environment environment = taskContext.getTaskContentService().getMarshallerContext(task).getEnvironment(); TaskPersistenceContext persistenceContext = taskContext.getPersistenceContext(); taskContext.loadTaskVariables(task); PeopleAssignments peopleAssignments = task.getPeopleAssignments(); List<OrganizationalEntity> businessAdministrators = peopleAssignments.getBusinessAdministrators(); List<DeadlineType> deadlineTypes = Arrays.asList(types); Deadlines deadlines = HumanTaskHandlerHelper.setDeadlines(task.getTaskData().getTaskInputVariables(), businessAdministrators, environment); if(deadlineTypes.contains(DeadlineType.START)) { for(Deadline deadline : deadlines.getStartDeadlines()) { task.getDeadlines().getStartDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } if(deadlineTypes.contains(DeadlineType.END)) { for(Deadline deadline : deadlines.getEndDeadlines()) { task.getDeadlines().getEndDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } persistenceContext.updateTask(task); scheduleDeadlinesForTask(task, taskContext, types); }
private ModelProperty generateModelProperty(String name, String type, ProcessRenderingSettings settings) { return BPMNVariableUtils.generateVariableProperty(name, type, settings.getMarshallerContext().getClassloader()); }
public long addTask(Task task, Map<String, Object> params) { taskEventSupport.fireBeforeTaskAdded(task, context); persistenceContext.persistTask(task); resolveTaskDetailsForTaskProperties(task); if (params != null) { taskEventSupport.fireBeforeTaskInputVariablesChanged(task, context, Collections.emptyMap()); resolveTaskDetails(params, task); ContentData contentData = ContentMarshallerHelper.marshal(task, params, TaskContentRegistry.get().getMarshallerContext(task).getEnvironment()); Content content = TaskModelProvider.getFactory().newContent(); ((InternalContent) content).setContent(contentData.getContent()); persistenceContext.persistContent(content); persistenceContext.setDocumentToTask(content, contentData, task); taskEventSupport.fireAfterTaskInputVariablesChanged(task, context, params); } taskEventSupport.fireAfterTaskAdded(task, context); return task.getId(); }
@Override protected Collection<FormDefinition> generateDefaultFormsForContext(ProcessRenderingSettings settings) { List<ModelProperty> properties = settings.getProcessData().entrySet().stream() .map(entry -> generateModelProperty(entry.getKey(), entry.getValue(), settings)) .filter(modelProperty -> modelProperty != null) .sorted((property1, property2) -> property1.getName().compareToIgnoreCase(property2.getName())) .collect(Collectors.toList()); BusinessProcessFormModel formModel = new BusinessProcessFormModel(settings.getProcess().getId(), settings.getProcess().getName(), properties); return dynamicBPMNFormGenerator.generateProcessForms(formModel, settings.getMarshallerContext().getClassloader()); }
@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; }
public ContentMarshallerContext getMarshallerContext(Task task) { if (task.getTaskData().getDeploymentId() != null && this.marhsalContexts.containsKey(task.getTaskData().getDeploymentId())) { return this.marhsalContexts.get(task.getTaskData().getDeploymentId()); } return new ContentMarshallerContext(); }
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 protected Collection<FormDefinition> generateDefaultFormsForContext(ProcessRenderingSettings settings) { List<ModelProperty> properties = settings.getProcessData().entrySet().stream() .map(entry -> generateModelProperty(entry.getKey(), entry.getValue(), settings)) .filter(modelProperty -> modelProperty != null) .sorted((property1, property2) -> property1.getName().compareToIgnoreCase(property2.getName())) .collect(Collectors.toList()); BusinessProcessFormModel formModel = new BusinessProcessFormModel(settings.getProcess().getId(), settings.getProcess().getName(), properties); return dynamicBPMNFormGenerator.generateProcessForms(formModel, settings.getMarshallerContext().getClassloader()); }
@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; }
@Override public void init() { TaskContentRegistry.get().addMarshallerContext(getIdentifier(), new ContentMarshallerContext(environment.getEnvironment(), environment.getClassLoader())); configureRuntimeOnTaskService(newTaskService(taskServiceFactory), null); }
private ModelProperty generateModelProperty(final String name, final String type, final TaskDefinition task, final TaskRenderingSettings settings) { if (BPMNVariableUtils.isValidInputName(name)) { boolean readOnly = task.getTaskInputDefinitions().containsKey(name) && !task.getTaskOutputDefinitions().containsKey(name); return BPMNVariableUtils.generateVariableProperty(name, type, readOnly, settings.getMarshallerContext().getClassloader()); } return 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); }
@Override public void init() { TaskContentRegistry.get().addMarshallerContext(getIdentifier(), new ContentMarshallerContext(environment.getEnvironment(), environment.getClassLoader())); boolean owner = false; TransactionManager tm = null;
private ModelProperty generateModelProperty(final String name, final String type, final TaskDefinition task, final TaskRenderingSettings settings) { if (BPMNVariableUtils.isValidInputName(name)) { boolean readOnly = task.getTaskInputDefinitions().containsKey(name) && !task.getTaskOutputDefinitions().containsKey(name); return BPMNVariableUtils.generateVariableProperty(name, type, readOnly, settings.getMarshallerContext().getClassloader()); } return null; }
@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; }
@Override public void init() { TaskContentRegistry.get().addMarshallerContext(getIdentifier(), new ContentMarshallerContext(environment.getEnvironment(), environment.getClassLoader())); boolean owner = false; TransactionManager tm = null;
@Override protected Collection<FormDefinition> generateDefaultFormsForContext( ProcessRenderingSettings settings ) { List<JBPMVariable> variables = new ArrayList<>(); settings.getProcessData().forEach( ( name, type ) -> { variables.add( new JBPMVariable( name, type ) ); } ); BusinessProcessFormModel formModel = new BusinessProcessFormModel( settings.getProcess().getId(), settings.getProcess().getName(), variables ); return dynamicBPMNFormGenerator.generateProcessForms( formModel, settings.getMarshallerContext().getClassloader() ); }