Назначения служебных задач JBPM вводятся из конфигурации - PullRequest
2 голосов
/ 16 июня 2020

У меня есть процесс JBPM, в который я добавил Service Task Rest. Во входах назначений я хочу установить URL-адрес через файл конфигурации, а не непосредственно в поле источника.

enter image description here

I am researching 3 days but still I cant find it.

Is there any option to set the url value like this:

http://{ip-address}/{port}/update

As you can see in the example above ip-address and port should be read from a config or property file.

The next part is just to check is everything okay.

Can I achieve the result like this:

    Config config = new Config();
    

    /** Output Variables in a HashMap ***/
    Map resultMap = new HashMap();
    resultMap.put("Result", msg); // ("name of variable", value)
    resultMap.put("url", "http://" + config.getProperty("ip") + config.getProperty("port") + "/update");
    manager.completeWorkItem(workItem.getId(), resultMap);

NEW EDIT

Maybe I wrote it a little bit confusing but like this the whole url need to be in the config and what I want is only ip and port to be read from config and to to write in the source like this manually: http:// (wrote by me manually) + ip : port (read from config) / update (wrote by me manually). So as I wrote above, I want only ip and port values from config. That is why I wrote them as {ipVar}:{portVar} above.

New edit: Thank you for the detailed answers. Maybe I am writing it confusing so I will explain this picture: введите описание изображения здесь

вы видите, моя цель заключалась в том, чтобы получить только ip и порт из конфигурации и все остальное, что пользователь хочет написать, потому что могут быть другие конечные точки ...

например : http: // {ip}: {port} / create / user / bashir или https: // {ip}: 8080 / asd / update

Я хочу получить ip и порт как переменные из конфигурации и использовать его, если мне нужно какое-то задание, в данном случае URL.

1 Ответ

2 голосов
/ 16 июня 2020

У вас есть два решения:

  • Первое: чтобы создать свою собственную задачу отдыха, это то, что мы называем WorkItem, которое состоит из разработки вашей собственной задачи, в которой вы используете свой REST API так, как вы хотеть. посмотрите здесь , чтобы понять, как мы создаем WorkItem.
  • Второй: вам нужно создать WorkItem (настраиваемая задача), которую вы вызываете непосредственно перед Service Task Rest, который будет импортировать ваши данные только из файла конфигурации и назначить импортированные значения глобальным переменным. И затем, в Service Task Rest, вы должны ввести в поле Source имя переменной для каждого входа

Я надеюсь, что мой ответ был ясным и полезным. Я всегда так делаю.

Изменить: вы должны изменить свой код следующим образом

Config config = new Config();


/** Output Variables in a HashMap ***/
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("Result", msg); // ("name of variable", value)
resultMap.put("url", "http://" + config.getProperty("ip") +":"+ config.getProperty("port"));
manager.completeWorkItem(workItem.getId(), resultMap);

в WorkDefinitions:

[
    "name" : "WorkItemTest",
    "parameters" : [ //inputs
        "stringVar " : new StringDataType(),
    ],
    "results" : [ //outputs
        "url" : new ObjectDataType(),
    ],
    "displayName" : "WorkItemTest",
    "icon" : "defaultservicenodeicon.png"
]

тогда вы go в определение переменной и определите переменную с именем url и finalURL типа String, как показано ниже (это на французском языке)

enter image description here

Позже вы рисуете свою задачу и выводите следующий результат:

enter image description here

теперь ваш URL из файла конфигурации назначается URL-адресу переменной, теперь вам нужно объединить URL-адрес с конечной точкой (ip: port / update). Для этого вам нужно добавить задачу сценария, в которую вы добавите эту строку кода:

kcontext.setVariable("finalURL",url+"/update"); //this will assign the url + "/update" to the variable finalURL

Итак, последний шаг, на скриншоте, которым вы поделились, для URL-адреса вы выбираете из поля со списком переменная с именем finalURL, как показано ниже

enter image description here

...