Страница 1 из 1

process management

Добавлено: 12 сен 2017, 12:38
e.levitskiy
и снова здравствуйте, уважаемые коллеги
вновь вернулся к подзабытому желанию освоить process management
столкнулся с непониманием одного момента:
- при выполнении условия перехода- создается связанная заявка, крайне хочется в нее передать CustomerUser того, кто создал процессную заявку.
в мануале вообще не указано, можно ли использовать переменные Изображение
своим умом понимаю, что новая заявка- новая сущность, которая никоим образом не связана (кроме линка) с родителем, и передать ей кастомера, создавшего процессную заявку попросту никак. но может все-таки?
суть- процесс трудоустройства на работу- сотрудник отдела кадров заполняет форму процессной заявки (завести учетку, выдать комп, телефон, подготовить канцелярией и т.п.) эти работы выполняют разные отделы. соответственно при заведении процессной заявки необходимо наплодить несколько новых профильных.(заведение учетки админам, подготовить ПК в техподдержку и т.п.) но в качестве кастомера необходимо указать сотрудника отдела кадров, который изначально завел процессную заявку, чтобы он контролировал процесс выполнения- что сделано а что нет. ( при выполнении прилетает емейл-уведомление)
сотрудник отдела кадров не один, поэтому жестко указать его нельзя.
#хелпмиплиз

Re: process management

Добавлено: 12 сен 2017, 13:34
e.levitskiy
вот тут, замучался, что тут подставить- чтобы нужный клиент был указан? пробовал разное, не могу сообразить, возможно ли вообще переменные использовать?
Изображение
история заявок показывает что воспринимает это все как текст..
Изображение

Re: process management

Добавлено: 12 сен 2017, 14:11
MrIch
Приветствую!

Тоже долго пытался понять, как заставить отрску брать данные родителя.
Данную проблему решил с помощью изменения кода /opt/otrs/Kernel/System/ProcessManagement/TransitionAction/TicketCreate.pm
Вот пример кода, который вам нужно будет вставить в данный модуль, дабы получилось - то, что вы хотите:
в начало:

Код: Выделить всё

use strict;
use warnings;
use utf8;
use Kernel::System::ObjectManager; # эту строчку добавляем
use Kernel::System::VariableCheck qw(:all);
Делаем поиск по TicketCreate и видим такую строчку:

Код: Выделить всё

my $TicketID = $TicketObject->TicketCreate(
        %TicketParam,
        UserID => $Param{UserID},
    );
После нее добавляем:

Код: Выделить всё

my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
my %Ticket12 = $TicketObject->TicketGet(
            TicketID      => $Param{Ticket}->{TicketID},
            DynamicFields => 1,         # Optional, default 0. To include the dynamic field values for this ticket$
            UserID        => 1,
        );
my $Success123 = $TicketObject->TicketCustomerSet(
        No       => $Ticket12{CustomerID},
        User     => $Ticket12{CustomerUserID},
        TicketID => $TicketID,
        UserID   => 1,
    );
Сохраняем - пробуем).
В результате у вас создаться заявка - в которой клиентом будет клиент процессной заявки

Re: process management

Добавлено: 12 сен 2017, 15:36
e.levitskiy
Респект!! работает! спасибо огромное!
*нужно учить код:)

Re: process management

Добавлено: 12 сен 2017, 16:32
e.levitskiy
продолжаем...как дальше размножить процессную заявку на множество связанных заявок ?
насколько я понял- процесс-менеджмент не умеет паралелить процесс- только заданна последовательность. при попытке запуска вот такого процесса
Изображение
с одинаковым условием перехода выполняется по-моему то условие- которое в алфавитном порядке выше.
при этом можно создавать связанные заявки (еще раз спасибо MrIch)
имеем при создании процессной заявки форму из динамических полей
Изображение
следующий шаг- создания множества связанных заявок в разные очереди на выполнение. в разных новых заявках необходимо отразить информацию из первоначальных динамических полей. как ? знает кто-то?

Re: process management

Добавлено: 13 сен 2017, 00:23
alexus
В 5-ке точно можно создавать связанные тикеты в процессах.

Re: process management

Добавлено: 13 сен 2017, 09:32
e.levitskiy
в 4 тоже можно, никаких проблем, мой вопрос- как в связанный тикет передать инфо из процессного тикета? в данном случае динамические поля.

Re: process management

Добавлено: 13 сен 2017, 09:39
e.levitskiy
т.е. заводим процессную заявку
Изображение
согласно действиям перехода создается еще одна заявка. все класс
Изображение
но в процессной заявке есть динамические поля с информацией
Изображение
а в генерируемой действием перехода - нет, пустая заявка
Изображение
вот и ломаю голову- как передать в генерируемые связанные заявки информацию из родительской процессной

Re: process management

Добавлено: 13 сен 2017, 10:21
MrIch
Приветствую!)

И опять же - тоже бился над данной проблемой), ну и как следствие - *типо интрига* - модификация кода!)

Но тут уже нужна либо прям конкретика, либо вам лучше в этом разобраться самому).

https://drive.google.com/open?id=0By1Uj ... UNmdmRYaGM - ссылка на мой модуль с тестовой системы.
у меня пользователи дураки - поэтому все за них я делаю с помощью кода, дабы потом не нужно было править).
В чем тут фишка (опишу только то, что вносил):
1) Есть два варианта работы модуля - если в веб интерфейсе указан параметр ProcessTicket(строка 156) и если нет (со строки 764)
2) Если нет - то это стандартный кусок модуля без модификаций (со строки 764)
3) Если указан (строка 156) , то:
-Перед тем как делать какие-либо действия - вытаскиваем всю инфу по изначальному процессному заданию сюда: %Ticket12 (159)
-Специфика нужная мне для разбития - если указан чекбокс в динамическом поле (169) - то создаем заявку с определенным набором условий, если нет - то проверяем второе динамическое поле (466), если опять нет - просто выдаем единичку - типо все ок).
-Все параметры, которые передаются в функцию создания заявки - записываются в %TicketParam (из стандартного куска кода взято)- на строках 172-182 идет соотношение между этим массивом(переменной или еще чем - хз, делаю все по наитию, в терминах перла не разбираюсь)) ) и данными полученными от процессной заявки
-По каким то причинам при создании заявки - отрска не хочет указывать клиента - делаем это руками (193)
-Также в подзаявку засовываем инфу по первому сообщению из процессной заявки (234-253)
4) Дальше уже идет специфика - она вам по идее не нужна - можете навставлять стандартный код со строки 331 по 464
5) Для того, чтобы передать динамические поля в связанный тикет, нужно будет поменять в цикле DYNAMICFIELD
код

Код: Выделить всё

my $Success = $DynamicFieldBackendObject->ValueSet(
            DynamicFieldConfig => $DynamicFieldConfig,
            ObjectID           => $ObjectID,
            Value              => $Param{Config}->{ 'DynamicField_' . $DynamicFieldConfig->{Name} },
            UserID             => $Param{UserID},
        );
на

Код: Выделить всё

my $Success = $DynamicFieldBackendObject->ValueSet(
            DynamicFieldConfig => $DynamicFieldConfig,
            ObjectID           => $ObjectID,
            Value              => $Param{Ticket}->{ 'DynamicField_' . $DynamicFieldConfig->{Name} },
            UserID             => $Param{UserID},
        ); 

Re: process management

Добавлено: 13 сен 2017, 10:56
alexus
Ребята, вы тут функционал BPM-системы обсуждаете ))). Понятно, что задачи бывают такие. Но OTRS всё-таки немного другой продукт. Можно, конечно, там всего навернуть. Но надо иметь эксперитизу для этого.

Re: process management

Добавлено: 13 сен 2017, 11:09
MrIch
Можно конечно - но так не интересно)).
Открытый же продукт - соответственно можно крутить как душе угодно).

Re: process management

Добавлено: 13 сен 2017, 11:26
e.levitskiy
эм, а чем отличается функционально процесс создания рабочего места сотрудника от процесса заказа книги из мануала?
процесс ? процесс! инструмент в ОТРС есть? есть! хреновый? хреновый, ибо бесплатный ) но есть!
информации по процессам на форуме мало, так почему бы не наполнить его полезной информацией. будем расти и развиваться вместе!

Re: process management

Добавлено: 13 сен 2017, 11:30
alexus
У нас есть платный модуль Workflow, который как раз решает задачу создания последовательности связанных и зависимых тикетов. Можно и Процессы докрутить-допилить, но мы в своей практике их не используем, т.к. решили подобные задачи другим путём.

Re: process management

Добавлено: 13 сен 2017, 15:35
e.levitskiy
MrIch писал(а):Приветствую!)

1) Есть два варианта работы модуля - если в веб интерфейсе указан параметр ProcessTicket(строка 156) и если нет (со строки 764)
[/code]
спасибо, разбираюсь, не очень понятна эта фраза. подскажете что подразумевается?

Re: process management

Добавлено: 13 сен 2017, 16:02
ykolesnikov
А ещё есть ITSM модуль ChangeManagement, хотя уверен, workflow от Радиант будет удобнее в данном случае.
А "допильщиков" :D с профессиональным праздником - Днём Программиста!

Re: process management

Добавлено: 13 сен 2017, 16:11
e.levitskiy
ykolesnikov писал(а):А ещё есть ITSM модуль ChangeManagement,
я им не проникся (либо некорректно оценил функционал) ввиду обязательного назначения исполнителя. а хочется направлять процессную заявку в профильную очередь специалистов, без привязки к агентам, чтобы на выполнение брал любой свободный
в контексте моей задачи-
-при трудоустройстве сотрудника в интерфейсе кастомера сотрудник отдела кадров заполняет все необходимые поля (ФИО/должность/руководитель/необходимое оборудование/необходимая канцелярия/и т.п./ - заявка залетает в одну "родительскую" очередь , и множится в другие необходимые очереди. в размноженных заявках хотелось бы в идеале отразить "каждому свое"
админам -динамические поля с информацией для заведения учетки. техподдержке-поля для подготовки оборудования/ хозяйственникам- инфо для подготовки канцелярии/и т.п.
минимально- всем показывать всё.
как такое завернуть через ChangeManagement без согласований работ и прочих лишних "в контексте данной задачи" приседаний- не представляю

Re: process management

Добавлено: 13 сен 2017, 17:51
MrIch
e.levitskiy писал(а):
MrIch писал(а):Приветствую!)

1) Есть два варианта работы модуля - если в веб интерфейсе указан параметр ProcessTicket(строка 156) и если нет (со строки 764)
[/code]
спасибо, разбираюсь, не очень понятна эта фраза. подскажете что подразумевается?
Если при настройке TransactionAction укажете ProcessTicket = чему угодно, то заявка пойдет по 156-764, если не указан - то с 764 строки будет выполняться код).

Изображение

ykolesnikov писал(а): А "допильщиков" :D с профессиональным праздником - Днём Программиста!
Спасибо )))