Как получить пользователя, инициировавшего процесс в IBM BPM 8.5. Я хочу переназначить свою задачу пользователю, который фактически инициировал процесс. Как этого можно добиться в IBM BPM?
Как получить пользователя, инициировавшего процесс в IBM BPM 8.5?
Ответы (5)
Есть несколько способов узнать, кто инициировал задачу , но кто инициировал экземпляр процесса, несколько отличается. Вы можете выполнить одно из следующих действий:
Добавьте приватную переменную и назначьте ей tw.system.user_loginName в момент запуска POST. вы можете получить доступ к этой переменной для пользователя, который инициировал процесс. (Она будет нулевой или неопределенной для сценария, если задача инициирована каким-либо REST API или UCA.)
Разместите группу отслеживания после стартового события. Добавьте к нему входную переменную как имя пользователя, присвойте ей значение, такое же, как tw.system.user_loginName. Таким образом, всякий раз, когда процесс запускается, запись будет вставлена в таблицу БД. Вы можете получить это значение из этого представления в PerformanceDB.
Также может быть некоторая таблица, в которой регистрируются сведения об экземплярах процесса, где вы можете напрямую найти user_id.
Я предлагаю вам посмотреть метод getStarter() API ProcessInstanceData.
Официальная документация по API
Эта ссылка на IBM Developerworks также должна вам помочь: Запуск процесса
К сожалению, не существует готового способа сделать это — в экземпляре процесса ничего не записывается, что указывает на то, кто запустил процесс. Я предполагаю, что это связано с тем, что существует много способов запустить экземпляр процесса — из портала, через событие сообщения, из вызова API и т. д.
Возможно, лучший способ решить эту проблему — добавить обязательный входной параметр в BPD и указать, кто запустил процесс при его запуске. К сожалению, вы не можете предоставить какие-либо входные данные с нового портала OOTB, но вы можете легко создать свой собственный модуль запуска.
Если вы хотите направить первую незавершенную задачу пользователю, запустившему процесс, самый простой подход — просто поместить начальную точку в дорожку, а в действии выбрать маршрутизацию к «Последнему пользователю в дорожке». Это позаботится о прецеденте для вас, не требуя от вас ведения бухгалтерского учета для отслеживания пользователя.
Прошло некоторое время с тех пор, как я реализовал это, поэтому я не могу вспомнить, будет ли это работать элегантно, если у вас есть системные шаги перед первой задачей, но с этим можно легко справиться, переместив системные шаги в человеческий сервис для выполнения как часть этого звонка, а не как отдельный шаг в BPD.
Определите переменную как строковый тип и с помощью задачи сценария определите пользователя для входа в систему, который использует эту задачу, и назначьте ее определенной переменной, чтобы сохранить вас во всем процессе в качестве инициатора задачи.
Вы можете использовать эту строку кода для достижения того же самого:
tw.system.user_loginName