@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; } }
@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") 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; }
if (params instanceof ContentData) { ContentMarshallerContext ctx = TaskContentRegistry.get().getMarshallerContext(task); params = ContentMarshallerHelper.unmarshall(((ContentData) params).getContent(), ctx.getEnvironment(), ctx.getClassloader());
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 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; }
Object objectFromBytes = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader());
Object unmarshalledObject = ContentMarshallerHelper.unmarshall(outputContent.getContent(), context.getEnvironment(), context.getClassloader()); if(unmarshalledObject != null && unmarshalledObject instanceof Map){
private ModelProperty generateModelProperty(String name, String type, ProcessRenderingSettings settings) { return BPMNVariableUtils.generateVariableProperty(name, type, settings.getMarshallerContext().getClassloader()); }
private ModelProperty generateModelProperty(String name, String type, ProcessRenderingSettings settings) { return BPMNVariableUtils.generateVariableProperty(name, type, settings.getMarshallerContext().getClassloader()); }
@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()); }
@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()); }
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; }
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 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() ); }
public KieWorkbenchFormRenderingSettings generateRenderingContext( T settings, boolean generateDefaultForms ) { if ( generateDefaultForms || !StringUtils.isEmpty( settings.getFormContent() ) ) { try { ContextForms forms = generateDefaultForms ? generateDefaultForms( settings ) : parseForms( settings ); if ( forms.getRootForm() == null || !isValid( forms.getRootForm() ) ) { return null; } Map<String, Object> rawData = generateRawFormData( settings, forms.getRootForm() ); BackendFormRenderingContext context = contextManager.registerContext( forms.getRootForm(), rawData, settings.getMarshallerContext().getClassloader(), forms.getNestedForms().toArray( new FormDefinition[forms.getNestedForms().size()] ) ); prepareContext( settings, context ); context.getAttributes().put( SETTINGS_ATRA_NAME, settings ); return new KieWorkbenchFormRenderingSettings( context.getTimestamp(), context.getRenderingContext() ); } catch ( Exception ex ) { getLogger().debug( "Unable to generate render form: ", ex ); } } return null; }
@Before public void initTest() { when( marshallerContext.getClassloader() ).thenReturn( AbstractFormProvidingEngineTest.class.getClassLoader() ); formSerializer = new FormDefinitionSerializerImpl( new FieldSerializer(), new FormModelSerializer() ); List<FieldValueProcessor> processors = Arrays.asList( new SubFormFieldValueProcessor(), new MultipleSubFormFieldValueProcessor() ); Instance fieldValueProcessors = mock( Instance.class ); when( fieldValueProcessors.iterator() ).then( proc -> processors.iterator() ); formValuesProcessor = new FormValuesProcessorImpl( fieldValueProcessors ); dynamicBPMNFormGenerator = new DynamicBPMNFormGeneratorImpl( new TestFieldManager(), new DynamicFormLayoutTemplateGenerator() ); contextManager = new BackendFormRenderingContextManagerImpl( formValuesProcessor, new ContextModelConstraintsExtractorImpl() ); settings = generateSettigns(); processor = getProcessorInstance( formSerializer, contextManager, dynamicBPMNFormGenerator ); initFormsProvider(); }
@Before public void init() { SubFormFieldValueMarshaller subFormFieldValueMarshaller = new SubFormFieldValueMarshaller(); MultipleSubFormFieldValueMarshaller multipleSubFormFieldValueMarshaller = new MultipleSubFormFieldValueMarshaller(); List<FieldValueMarshaller> marshallers = Arrays.asList(subFormFieldValueMarshaller, multipleSubFormFieldValueMarshaller, new DateMultipleInputFieldValueMarshaller(), new DateMultipleSelectorFieldValueMarshaller(), new LocalDateFieldValueMarshaller(), new TextAreaFormFieldValueMarshaller()); Instance<FieldValueMarshaller<?, ?, ?>> marshallersInstance = mock(Instance.class); when(marshallersInstance.iterator()).then(proc -> marshallers.iterator()); registry = new FieldValueMarshallerRegistryImpl(marshallersInstance); subFormFieldValueMarshaller.setRegistry(registry); multipleSubFormFieldValueMarshaller.setRegistry(registry); backendFormRenderingContextManager = new BackendFormRenderingContextManagerImpl(registry, new ContextModelConstraintsExtractorImpl()); runtimeFormGeneratorService = new BPMNRuntimeFormGeneratorService(new TestFieldManager(), new RawMVELEvaluator()); dynamicBPMNFormGenerator = new DynamicBPMNFormGeneratorImpl(runtimeFormGeneratorService); processor = getProcessorInstance(new FormDefinitionSerializerImpl(new FieldSerializer(), new FormModelSerializer(), new TestMetaDataEntryManager()), backendFormRenderingContextManager, dynamicBPMNFormGenerator); when(marshallerContext.getClassloader()).thenReturn(this.getClass().getClassLoader()); }
@Before public void init() { SubFormFieldValueMarshaller subFormFieldValueMarshaller = new SubFormFieldValueMarshaller(); MultipleSubFormFieldValueMarshaller multipleSubFormFieldValueMarshaller = new MultipleSubFormFieldValueMarshaller(); List<FieldValueMarshaller> marshallers = Arrays.asList(subFormFieldValueMarshaller, multipleSubFormFieldValueMarshaller, new DateMultipleInputFieldValueMarshaller(), new DateMultipleSelectorFieldValueMarshaller(), new LocalDateFieldValueMarshaller(), new TextAreaFormFieldValueMarshaller()); Instance<FieldValueMarshaller<?, ?, ?>> marshallersInstance = mock(Instance.class); when(marshallersInstance.iterator()).then(proc -> marshallers.iterator()); registry = new FieldValueMarshallerRegistryImpl(marshallersInstance); subFormFieldValueMarshaller.setRegistry(registry); multipleSubFormFieldValueMarshaller.setRegistry(registry); backendFormRenderingContextManager = new BackendFormRenderingContextManagerImpl(registry, new ContextModelConstraintsExtractorImpl()); runtimeFormGeneratorService = new BPMNRuntimeFormGeneratorService(new TestFieldManager(), new RawMVELEvaluator()); dynamicBPMNFormGenerator = new DynamicBPMNFormGeneratorImpl(runtimeFormGeneratorService); processor = getProcessorInstance(new FormDefinitionSerializerImpl(new FieldSerializer(), new FormModelSerializer(), new TestMetaDataEntryManager()), backendFormRenderingContextManager, dynamicBPMNFormGenerator); when(marshallerContext.getClassloader()).thenReturn(this.getClass().getClassLoader()); }
@Before public void initTest() { when(marshallerContext.getClassloader()).thenReturn(AbstractFormProvidingEngineTest.class.getClassLoader()); formSerializer = new FormDefinitionSerializerImpl(new FieldSerializer(), new FormModelSerializer(), new TestMetaDataEntryManager()); SubFormFieldValueMarshaller subFormFieldValueMarshaller = new SubFormFieldValueMarshaller(); MultipleSubFormFieldValueMarshaller multipleSubFormFieldValueMarshaller = new MultipleSubFormFieldValueMarshaller(); List<FieldValueMarshaller> marshallers = Arrays.asList(subFormFieldValueMarshaller, multipleSubFormFieldValueMarshaller, new DateMultipleInputFieldValueMarshaller(), new DateMultipleSelectorFieldValueMarshaller(), new LocalDateFieldValueMarshaller(), new TextAreaFormFieldValueMarshaller()); Instance<FieldValueMarshaller<?, ?, ?>> marshallersInstance = mock(Instance.class); when(marshallersInstance.iterator()).then(proc -> marshallers.iterator()); registry = new FieldValueMarshallerRegistryImpl(marshallersInstance); subFormFieldValueMarshaller.setRegistry(registry); multipleSubFormFieldValueMarshaller.setRegistry(registry); dynamicBPMNFormGenerator = new DynamicBPMNFormGeneratorImpl(new BPMNRuntimeFormGeneratorService(new TestFieldManager(), new RawMVELEvaluator())); contextManager = new BackendFormRenderingContextManagerImpl(registry, new ContextModelConstraintsExtractorImpl()); settings = generateSettings(); processor = getProcessorInstance(formSerializer, contextManager, dynamicBPMNFormGenerator); initFormsProvider(); }