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

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

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

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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 174
2

Ответы 2

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

-Эндрю Пайер

Чтобы лучше ответить, нужно знать, что вы собираетесь делать с динамически создаваемыми бизнес-объектами (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
}

Не забудьте создать БО перед тем, как использовать их :)

Другие вопросы по теме