Частичная запись процессных переменных в Сущность

Добрый день!
Существует Task бизнес процесса, где с помощью InputDialog заполняются процессные переменные. На этом задании висит слушатель, который переносит значение процессных переменных в атрибуты сущности базы данных. Выглядит он следующим образом:

@Override
    public void notify(DelegateTask delegateTask) {
         dataManager = AppBeans.get(DataManager.class);
         bprocHelperService = AppBeans.get(BprocHelperService.class);
        Map<String, Object> propertyMap =  delegateTask.getVariables();
        StandardEntity standardEntity = (StandardEntity) propertyMap.get("createdEntity");
        if (standardEntity!=null) {
            MetaClass metaClass = standardEntity.getMetaClass();
            try{
                standardEntity = dataManager.reload(standardEntity, "edit");
            }catch (Exception e){e.printStackTrace();}
            for (Map.Entry<String, Object> entry : propertyMap.entrySet()) {
                    String propertyName = entry.getKey();                               
                    try {
                        standardEntity.setValue(propertyName, bprocHelperService.checkValue(metaClass, propertyName, entry.getValue())); //Метод устанавливающий атрибуты в сущность
                    }catch (IllegalArgumentException | IllegalStateException e){
                        e.printStackTrace();
                    }          
            }
            dataManager.commit(standardEntity);
        }
    }

Дело в том, что при такой работе в сущность будут записываться по возможности все процессные переменные, если название атрибута и переменной совпадает. А можно ли как то выделить определенные процессные переменные, которые нужно записать в сущность на данном конкретном задании? По факту нужно записывать только те, которые вводит пользователь в Input Dialog’e текущего задания.

Добрый день!
Чтобы получить список полей, объявленных на форме, можете воспользоваться BprocFormService. Что-то вроде этого:

public class MyTaskListener implements TaskListener {

    private Logger log = LoggerFactory.getLogger(MyTaskListener.class);

    @Override
    public void notify(DelegateTask delegateTask) {
        BprocFormService bprocFormService = AppBeans.get(BprocFormService.class);
        FormData taskFormData = bprocFormService.getTaskFormData(delegateTask.getId());
        if (taskFormData != null) {
            String fieldIds = taskFormData.getFields().stream()
                    .map(FormField::getId)
                    .collect(Collectors.joining(", "));
            log.info("Evaluated form fields: " + fieldIds);
        } else {
            log.info("FormData not found");
        }
    }
}

В более общем случае, для передачи параметров в слушатель задачи можно воспользоваться механизмом Flowable field injection.

Т.е. в вашем TaskListener объявляете поле fieldsList:

public class MyTaskListener2 implements TaskListener {

    private Logger log = LoggerFactory.getLogger(MyTaskListener2.class);

    private Expression fieldsList;

    @Override
    public void notify(DelegateTask delegateTask) {
        String fieldsListValue = (String) fieldsList.getValue(delegateTask);
        log.info("FieldsList value: {}", fieldsListValue);
    }
}

А в моделере задаёте значение этого поля для каждого конкретного случая использования листенера:

изображение

Спасибо за ответ!
Пока ждал ответа, реализовал нечто похожее на Ваш второй вариант, только вместо полей слушателя использовал отдельную процессную переменную, куда также записывал требуемые поля.
Ваш первый вариант - первое что пришло на ум, однако

 FormData taskFormData = bprocFormService.getTaskFormData(delegateTask.getId());

почему то возвращало мне null. В любом случае одним из этих способов воспользуюсь.