0

我有一个 json 文件,我在其中永久地重写了我的数据库中的数据,所以在它里面我有几个 json 对象(我的意思是我的 json 文件中有 json 数组)我想为一个 json 对象制作一个表单,因为这个原因我用过嵌入表单我的意思是用户任务表单和角度用户界面,这是我的代码:v

ar jsonFile;
inject([ ‘$scope’, ‘$http’, ‘$location’, ‘Uri’, function($scope, $http, $location, Uri) {

    camForm.on('form-loaded', function () {
        $http.get(Uri.appUri("engine://engine/:engine/process-definition/key/my-process-key/startForm")).success(function(result){
            var contextPath = result.contextPath + '/forms/';       
            var filePath = contextPath + 'data.json';
            $.getJSON(filePath, function(json) {
                jsonFile = json;
            });
        }); 
    });
   var jsonData1=JSON.stringify(jsonFile); 
   var rawData=JSON.parse(jsonData1);
    var documentData = $scope.documentData = {
    "id":rawData[i]["id"],
    "organizationNameGE":rawData[i]["organizationNameGE"],
    "organizationNameEN":rawData[i]["organizationNameEN"],
    "cardNumber":rawData[i]["cardNumber"]
    };

camForm.on('form-loaded', function() {

      camForm.variableManager.createVariable({
        name: 'documentData',
        type: 'json',
        value: documentData
      });

    });

但它抛出异常,我有意外的输入结束,但是当我用自定义数据替换文件数据时它工作得很好,我在这里缺少什么?我怎样才能一次为每个 json 数据对象生成一个表单?我也试过这个:我在java的用户任务进程中添加了TaskListener它看起来像这样

public class FormListener implements TaskListener {
    public void notify(DelegateTask arg0) {

        long id = (Long) arg0.getVariable("id");
        String organizationNameGE=(String) arg0.getVariable("organizationNameGE");
        String organizationNameEN=(String) arg0.getVariable("organizationNameEM");
        String cardNumber=(String) arg0.getVariable("cardNumber");
        arg0.setVariable("id",id);
        arg0.setVariable("organizationNameGE",organizationNameGE);
        arg0.setVariable("organizationNameEN",organizationNameEN);
        arg0.setVariable("cardNumber",cardNumber);


    }
}

我的嵌入表单脚本中也有这段代码:

inject(['$scope', '$http', function($scope, $http) {
    var variableManager = camForm.variableManager;

    // OnFormLoaded
    camForm.on('form-loaded', function() {
      // Fetch Variables
      // - General
      variableManager.fetchVariable('processInitiator'); // set by the engine
      // - Process
      variableManager.fetchVariable('id'); // set in an earlier form
      variableManager.fetchVariable('organizationNameGE');
      variableManager.fetchVariable('organizationNameEN');
      variableManager.fetchVariable('cardNumber');
    });

    // OnVariablesFetched
    camForm.on('variables-fetched', function() {
      // After the variables are fetched, bind the value to the angular scope
      // - General
      $scope.processInitiator = variableManager.variable('processInitiator').value;

      // - Process
      $scope.id = variableManager.variable('id').value;
      $scope.organizationNameGE= variableManager.variable('organizationNameGE').value;
      $scope.organizationNameEN = variableManager.variable('organizationNameEN').value;
      $scope.cardNumber=variableManager.variable('cardNumber').value;

    });

但它确实;t 给了我任何结果,我的意思是它会引发像这样的异常 SPIN/JACKSON-JSON-01004 Unable to find 'id' 我应该改变什么才能使我的代码工作?

4

1 回答 1

0

只需创建一个在用户任务开始时执行的执行列表器,您就可以在图中创建它。在 Listner 实现中,将 JSON 读取为键值对,并将键设置为 camunda 变量名称和值。现在在表单中将 cam 变量作为您在 Listner 实现中给出的键。您可以在 JavaScript /Java 中实现 Listner。

于 2018-02-07T16:44:10.620 回答