【问题标题】:Dynamically create a TW object in IBM BPM在 IBM BPM 中动态创建 TW 对象
【发布时间】:2019-03-28 14:47:45
【问题描述】:

我正在使用 IBM BPM 8.6

我有一个输入字符串如下: "\"RECORD_CONTACT\":\"Maram\" , \"DRUG\":\"Panadol\"

在服务器端的脚本中,我想像这样动态创建一个业务对象:

tw.local.recordContact = Maram;
tw.local.drug = Panadol;

如何动态创建业务对象?

【问题讨论】:

    标签: javascript json object dynamic business-process-management


    【解决方案1】:

    您的请求存在一些问题。首先是您不是在创建业务对象,而是在创建变量。在 IBM BPM 中,必须在设计时声明变量,否则会出现错误,因此调用尝试调用类似 -

    tw.local.myVariable = 'Bob';
    

    如果 tw.local.myVariable 尚未声明,将抛出异常。根据您在此处提出的其他问题(link),我假设您实际上有一个声明为“return”的 ANY 变量,以便

    tw.local.return.myVariable = 'Bob'
    

    会起作用。鉴于我基于 Sven 的回答,我认为以下内容会起作用(您需要验证)

    var str = "\"RECORD_CONTACT\":\"Maram\" , \"DRUG\":\"Panadol\"";
    var jsonStr = "{" + str.replace(/\\\"/g,'\"') + "}";
    var tempValue = JSON.parse(jsonStr);
    var keyArray = Object.keys(tempValue);
    var valueArray = Object.values(tempValue);
    for(var keyCount=0; keyCount<keyArray.length; keyCount++{
      var evalString = "tw.local.return."+keyArray[keyCount]+"="+valueArray[keyCount];
      eval(evalString);
    }
    

    我会注意到这样做是一个非常糟糕的主意,因为它会是非常脆弱的代码,并且以这种方式使用 eval() 会使您面临各种可能的漏洞。如果其中一个键的值不是简单类型,它也会失败。

    -安德鲁·派尔

    【讨论】:

      【解决方案2】:

      应该知道您将如何处理动态创建的业务对象 (BO),以便更好地回答您。就像一种非常通用的方式一样 - 创建 JSON 对象而不是 BO。

      但如果您想坚持使用 BO,那么只有在设计时事先了解所有 BO 结构(模式)时才有可能。

      var str = "\"RECORD_CONTACT\":\"Maram\" , \"DRUG\":\"Panadol\"";
      vat objArray = str.split("reg ex to split each object string")
      foreach (obj in objArray ){
      if(obj.indexOf( "RECORD_CONTACT")!=-1)
          tw.local.recordContact = new tw.object.RECORD_CONTACT();
          //below goes code get value of each attribute of BPM from string
      }
      else if(obj.indexOf( "DRUG")!=-1){
      //similar code to create BO DRUG
      }
      

      在使用之前不要忘记创建 BO :)

      【讨论】:

        猜你喜欢
        • 2015-12-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 2014-03-26
        相关资源
        最近更新 更多