Ошибка IllegalArgumentException при редактировании переменной с типом entity

Добрый день,

При редактировании переменной с типом entity в форме “Редактор процесса” возникает ошибка IllegalArgumentException.

Версия Jmix: 1.5.2

Шаги для воспроизведения проблемы:

  1. Создать процесс с переменной типа entity.
  2. Запустить процесс.
  3. Открыть активный экземпляр процесса в редакторе из экрана “Процессы”.
  4. Перейти на вкладку “Время выполнения - Переменные”, выбрать переменную с типом entity и нажать кнопку “Изменить”.

Результат: ошибка java.lang.IllegalArgumentException: MetaClass not found for null

Stacktrace:

Caused by: java.lang.IllegalArgumentException: MetaClass not found for null
	at io.jmix.core.metamodel.model.impl.SessionImpl.getClass(SessionImpl.java:43) ~[jmix-core-1.5.2.jar:na]
	at io.jmix.core.impl.MetadataImpl.getClass(MetadataImpl.java:129) ~[jmix-core-1.5.2.jar:na]
	at io.jmix.bpmui.screen.processvariable.VariableInstanceDataEdit.createEntityPickerField(VariableInstanceDataEdit.java:237) ~[jmix-bpm-ui-1.5.2.jar:na]
	at io.jmix.bpmui.screen.processvariable.VariableInstanceDataEdit.createComponent(VariableInstanceDataEdit.java:183) ~[jmix-bpm-ui-1.5.2.jar:na]
	at io.jmix.bpmui.screen.processvariable.VariableInstanceDataEdit.initValueComponent(VariableInstanceDataEdit.java:117) ~[jmix-bpm-ui-1.5.2.jar:na]
	at io.jmix.bpmui.screen.processvariable.VariableInstanceDataEdit.onBeforeShow(VariableInstanceDataEdit.java:77) ~[jmix-bpm-ui-1.5.2.jar:na]
	at io.jmix.core.common.event.EventHub.publish(EventHub.java:170) ~[jmix-core-1.5.2.jar:na]
	at io.jmix.ui.screen.Screen.fireEvent(Screen.java:124) ~[jmix-ui-1.5.2.jar:na]
	at io.jmix.ui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58) ~[jmix-ui-1.5.2.jar:na]
	at io.jmix.ui.sys.ScreensImpl.fireScreenBeforeShowEvent(ScreensImpl.java:1364) ~[jmix-ui-1.5.2.jar:na]
	at io.jmix.ui.sys.ScreensImpl.show(ScreensImpl.java:357) ~[jmix-ui-1.5.2.jar:na]
	at io.jmix.ui.screen.Screen.show(Screen.java:306) ~[jmix-ui-1.5.2.jar:na]
	at io.jmix.bpmui.screen.processinstance.ProcessInstanceEditRuntimeFragment.onVariablesTableEdit(ProcessInstanceEditRuntimeFragment.java:261) ~[jmix-bpm-ui-1.5.2.jar:na]

Скриншот:

image

Добрый день!

Спасибо, что сообщили о проблеме. Завел тикет.

1 симпатия

Добрый день,

В версии jmix 1.5.3 проблема решена частично. В случае, если переменная имеет значение null, на экране редактирование выдается сообщение “Невозможно создать редактируемый компонент”.

image

Добрый день!

Вы же можете выбрать тип entity, дальше указать нужную сущность и проставить значение?

В случае, если значение null, то вроде бы мы никак не можем предугадать, какого типа должно быть данное значение.

Вы же можете выбрать тип entity, дальше указать нужную сущность и проставить значение?

Да, тип выбрать можно. Но пользователи могут воспринимать эту ситуация как дефект, т.к. тип переменной указан в определении бизнес-процесса и пользователь выбирает значение в диалоговой форме, в том числе может указать пустое значение (null).

Насколько я вижу, для переменных entity с заполненным значением в атрибуте textValue2 хранится значение в формате $entity."$id". Может быть при выборе пользователем null сохранять в переменной тип сущности (например, записывать $entity.null)?