Как получить доступ к переменным процесса во встроенной форме

#camunda

#camunda

Вопрос:

Я хотел бы получить доступ к переменной процесса во встроенной форме, но я не могу этого сделать. Я просмотрел документацию по адресу https://docs.camunda.org/manual/7.8/reference/embedded-forms/javascript/examples / а также с помощью примеров на https://github.com/camunda/camunda-bpm-examples/tree/master/usertask/task-form-embedded-serialized-java-object и я думаю, что я освоился с этим, но следующий код просто не работает, хотя кажется, что он равен 1: 1 с документацией.

Возможно, проблема в том, что переменная, к которой я пытаюсь получить доступ, — это LinkedHashMap (созданная как mVariables = ['something': 'foo'] в Groovy)

Следующий фрагмент ничего не показывает в списке задач Camunda.

 <form role="form" name="form" xmlns="http://www.w3.org/1999/html">
    <script cam-script type="text/form-script">
        camForm.on('form-loaded', function() {
            camForm.variableManager.fetchVariable('mVariables');
        });
        camForm.on('variables-fetched', function() {
            $scope.mVariables= camForm.variableManager.variable('mVariables').value;
        });
    </script>

    <h1>{{mVariables.something}}</h1>
    <p ng-bind="mVariables.something"></p>
<form>
  

Не мог бы кто-нибудь, пожалуйста, предоставить рабочий минимальный пример чтения переменной процесса, которая является LinkedHashMap?

Ответ №1:

На самом деле, LinkedHashMap не может быть передан, как я предложил. Это написано в сером поле в верхней части этого сайта документации: https://docs.camunda.org/manual/7.8/reference/embedded-forms/java-objects /

Я решил свою проблему, разделив карту на отдельные переменные, которые затем можно прочитать во встроенной форме следующим образом:

 <form role="form" name="form" xmlns="http://www.w3.org/1999/html">
    <script cam-script type="text/form-script">
        camForm.on('form-loaded', function() {
            camForm.variableManager.fetchVariable('mVariableFoo');
            camForm.variableManager.fetchVariable('mVariableBar');
        });
        camForm.on('variables-fetched', function() {
            $scope.mVariableFoo = camForm.variableManager.variable('mVariableFoo').value;
            $scope.mVariableBar = camForm.variableManager.variable('mVariableBar').value;
        });
    </script>

    <h1>{{mVariableFoo}}</h1>
    <p>{{mVariableBar}}</p>
<form>