Динамически создавать объект TW в IBM BPM

Я использую IBM BPM 8.6

У меня есть входная строка следующим образом: ""RECORD_CONTACT":"Maram" , "DRUG":"Panadol"

В сценарии на стороне сервера я хочу динамически создать бизнес-объект следующим образом:

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

Как я могу динамически создать бизнес-объект?

Всего 1 ответ


Есть несколько проблем с вашим запросом. Во-первых, вы не создаете бизнес-объект, вы создаете переменные. В IBM BPM переменные должны быть объявлены во время разработки или вы получите сообщение об ошибке, поэтому при попытке вызвать что-то вроде -

tw.local.myVariable = 'Bob'

Выскажет исключение, если tw.local.myVariable не было объявлено. Основываясь на вашем другом вопросе, который вы задали здесь ( ссылка ), я собираюсь предположить, что у вас на самом деле есть ЛЮБАЯ переменная, объявленная как «return», так что

tw.local.return.myVariable = 'Bob'

буду работать. Учитывая, что я основывался на ответе Свена, я думаю, что что-то вроде следующего будет работать (вам нужно будет проверить)

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 () открывает вам всевозможные возможности. Он также сильно потерпит неудачу, если значение для одного из ключей не является простым типом.

-Андрю Пайер


Есть идеи?

10000