Сохранить в движке camunda (версия 7.9) тип переменной «Дата»

Я хочу сохранить переменную «beauftragungsdatum» типа «Date» в движке:

inject(['$http', 'Uri', function($http, Uri) {
camForm.on('store', function(evt) {
evt.retrieveVariables()

var varManager = evt.variableManager;
var vars = varManager.variables;
var dataVar = $scope.beauftragungsdatum;
varManager.variableValue('beauftragungsdatum', dataVar);
var variableData = {};
      for(var v in vars) {
        if(varManager.isDirty(v)) {
          var val = vars[v].value;
          if(varManager.isJsonVariable(v)) {
            val = JSON.stringify(val);
          }
          variableData[v] = {
            value: val,
            type: vars[v].type,
            valueInfo: vars[v].valueInfo
          };
        }
      }

      var data = { modifications: variableData };
      var config = {
        headers : {
          'Content-Type': 'application/json'
        }
      };
      $http.post(Uri.appUri('engine://engine/:engine/task/' + camForm.taskId + '/variables'), data, config);
      evt.storePrevented = true;
    });
  }]);

В момент сохранения у меня проблема: переменная «beauftragungsdatum» не является типом даты. Я узнал, что var имеет неправильный формат. Я исправил это и вставил какое-то решение:

 inject(['$http', 'Uri', function($http, Uri) {
    camForm.on('store', function(evt) {
    evt.retrieveVariables()

    var varManager = evt.variableManager;
    var vars = varManager.variables;
    var now=moment(dataVar).format("YYYY-MM-DDTHH:mm:ss.sssZZ");
    console.log(now);
    console.log(typeof now);
    var d=varManager.variableValue('beauftragungsdatum');
    console.log(d);
    console.log(typeof d);

  varManager.variableValue('beauftragungsdatum')=now;
    var variableData = {};
          for(var v in vars) {
            if(varManager.isDirty(v)) {
              var val = vars[v].value;
              if(varManager.isJsonVariable(v)) {
                val = JSON.stringify(val);
              }
              variableData[v] = {
                value: val,
                type: vars[v].type,
                valueInfo: vars[v].valueInfo
              };
            }
          }

          var data = { modifications: variableData };
          var config = {
            headers : {
              'Content-Type': 'application/json'
            }
          };
          $http.post(Uri.appUri('engine://engine/:engine/task/' + camForm.taskId + '/variables'), data, config);
          evt.storePrevented = true;
        });
      }]);

В результате у меня проблема с прикреплением файла. введите здесь описание изображения Мне нужна помощь в этом вопросе, возможно, вы знаете, как сохранить var ' Дата» в Camunda 7.9.


person fin    schedule 06.08.2018    source источник


Ответы (1)


В следующей строке значение, которое вы помещаете в now, является строкой:

var now=moment(dataVar).format("YYYY-MM-DDTHH:mm:ss.sssZZ");

Метод format возвращает строку в указанном вами формате.

если вы хотите получить объект Date, используйте moment(dataVar).toDate().

person Shai    schedule 06.08.2018
comment
Привет, Шай. Вы имеете в виду, что я должен написать что-то вроде этого: var now=moment(dataVar).toDate(); и после этого: varManager.variableValue('beauftragungsdatum', now) ; В результате у меня возникла проблема: вызвано: com.fasterxml.jackson.databind.exc.InvalidFormatException: невозможно создать экземпляр java.util.Date из строкового значения '2018-08-08T03:00:00.000Z': не допустимое представление (ошибка: не удалось проанализировать значение даты «2018-08-08T03:00:00.000Z»: неразборчивая дата: 2018-08-08T03:00:00.000Z) в [Источник: 2018-08-08T03:00: 00.000Z; строка: 1, столбец: 1] - person fin; 06.08.2018
comment
Я думаю здесь: varManager.variableValue('beauftragungsdatum', now); - person fin; 06.08.2018
comment
Вы должны убедиться. Попробуйте поставить точку останова и посмотреть, где и когда возникает ошибка. - person Shai; 06.08.2018
comment
Поместите точку останова на первую строку, а затем запускайте строки одну за другой, пока одна из них не выдаст исключение. - person Shai; 06.08.2018