Данные бизнес процесса

отредактировано 22 апр Раздел: Бизнес-процессы (WorkFlow)

Добрый день!
Подскажите пожалуйста где хранятся данные БП, которые живут во время жизни экземпляра?
Например нам нужно, чтобы каждый день в 9-00 операторы получили задачу проверки сообщений от пользователей в сторонней системе.
Эти сообщения нужно сохранить - создадим для них Тип объекта.
1. Также нужно сохранить дополнительные атрибуты к каждому сообщению, которые будут влиять на логику БП. Где их хранить? Кажется логичным было бы при создании БП иметь возможность указать в нём Атрибуты, но я такого не нашел.
2. Что такое "Маршрутный объект" ? Написано - " для которых может запускаться и исполняться бизнес-процесс".
2.1. А если БП запускается по расписанию - какой у него маршрутный объект?
2.2 А если БП запускается для всей БД т.е. взаимодействует с десятком Типов объектов - какой у него Маршрутный объект?

Запутался может - прошу пояснить за методологию )
Спасибо.

Комментарии

  • @AlexM09 написал:
    Добрый день!
    Подскажите пожалуйста где хранятся данные БП, которые живут во время жизни экземпляра?
    Например нам нужно, чтобы каждый день в 9-00 операторы получили задачу проверки сообщений от пользователей в сторонней системе.
    Эти сообщения нужно сохранить - создадим для них Тип объекта.
    1. Также нужно сохранить дополнительные атрибуты к каждому сообщению, которые будут влиять на логику БП. Где их хранить? Кажется логичным было бы при создании БП иметь возможность указать в нём Атрибуты, но я такого не нашел.
    2. Что такое "Маршрутный объект" ? Написано - " для которых может запускаться и исполняться бизнес-процесс".
    2.1. А если БП запускается по расписанию - какой у него маршрутный объект?
    2.2 А если БП запускается для всей БД т.е. взаимодействует с десятком Типов объектов - какой у него Маршрутный объект?

    Запутался может - прошу пояснить за методологию )
    Спасибо.

    Добрый день!
    У вас есть тип объекта, назовем его например "Объект для БП", в нем определен весь атрибутный состав
    Так же у вас есть БП, назовем его например "БП проверка сообщений", в нем указываете связь с типом "Объект для БП"
    И получается экземпляры которые будут создаваться в типе "Объект для БП", будут маршрутными объектами бизнес процесса "БП проверка сообщений"
    При запуске бп по расписанию ничего не меняется маршрутный объект у бп будут так же экземпляром типа который связан с этим бп, но при запуске бп в алгоритме необходимо определять по какому именно экземпляру нужно запускать бп
    Статья wiki

  • Спасибо.
    1. Правильно я понял, что в типе данных "Объект для БП" в котором определен атрибутный состав для исполнения БП хранятся данные для разных экземпляров БП. Т.е., допустим, есть атрибуты "А" и "Б" в "Объект для БП" и если запустить 10 экземпляров параллельно этого БП, то будут хранится в атрибутах А и Б разные значения разных экземпляров этих БП. И вот каждый такой экземпляр типа объекта "Объект для БП" и называется маршрутным объектом конкретного экземпляра БП?
    2. Как методологически правильно связывать БП с Типом данным? К примеру, у нас есть документ "Расходная накладная", мы этот тип данных наследовали от объекта "Документ". При конструировании какого-то БП нам нужно пользоваться (писать и читать) данными и этого типа данных и других и в т.ч. нужны специфические атрибуты для исполнения БП не имеющими отношения к Документам. Не правильным ли будет для каждого БП создавать свои Тип Данных в общем случае?
    3. Не понятно выражение в конце "по какому именно экземпляру нужно запускать бп" - что значит запускать БП по экземпляру БП?
    Спасибо.

  • Для понимания давайте определим что такое тип объекта простыми словами: это таблица в бд
    Пример: то есть создали тип объекта "Объект для БП" и 4 экземпляра этого объекта с 3я кастомными атрибутами, то в бд это будет выглядеть как таблица

    Соответственно по каждому экземпляру можем запускать бп
    Советую прочитать блок про модель данных

    1. Да, то есть у вас есть тип "Объект для БП" с атрибутами "А" и "Б", если создать 10 экземпляров этого типа и запустить по ним бп то да, каждый из них будет маршрутным объектом для процесса "БП проверка сообщений", но экземпляр запущенного процесса будет у каждого свой
      1 БП = N кол-во экземпляров запущенного процесса
      1 экземпляр запущенного процесса = 1 маршрутный объект
      То есть запустить по одному бп можно сколько угодно маршрутных объектов, схема процесса будет у всех одна, но физически каждый маршрутный объект будет относится к своему экземпляру запущенного процесса и соответственно у маршрутных объектов будет свой набор значений в атрибутах
    2. Каких то определенных правил как связывать бп с типо нет, просто создаете тип, добавляете в него нужные атрибуты и связываете с бп
      В тип можно добавлять любые атрибуты для покрытия любых кейсов, соответственно если создали тип "Расходная накладная" то можете расширить его атрибутный состав любыми атрибутами, тут четкого ответа нет и нужно продумать объектную модель более детально
    3. Я говорил про запуск бп в алгоритме. Когда запускается процесс, в системе создается "экземпляр запущенного процесса" который связан с бп (автоматически) и связан с маршрутным объектом
      Вот в случае когда запускаете бп из алгоритма то система автоматически не поймет с каким маршрутным объектом связать "экземпляр запущенного процесса", это нужно указывать в алгоритме
  • Вы пишите - "1 экземпляр запущенного процесса = 1 маршрутный объект". 1 маршрутный объект - это запись в таблице "Объект для БП"? Тогда как-же параллельный запуск БП?

    Попробую задать вопрос на вымышленном примере:
    Вот к примеру есть таблица "Расходные накладные" каждая запись - отдельный документ. Пусть это маршрутный объект БП "Получить скидку".

    Например есть такой БП "Получить скидку" и я бы хотел, чтобы по одной накладной несколько пользователей могли бы запускать его сколько угодно раз:

    Где хранить то, что выдал генератор случайных чисел? В таблице Расходных накладных его нет и он там не нужен.

    Например, я хочу построить отчет вида:

  • 1 маршрутный объект - это запись в таблице "Объект для БП"? Да, то есть экземпляр типа "Объект для БП"
    Тогда как-же параллельный запуск БП? параллельный запуск означает что система разрешит по одной карточке запустить бп несколько раз, то есть будет 1 карточка и n количество экземпляров запущенного процесса (но одного конкретного бп)

    По примеру из БП "Получить скидку":

    Где хранить то, что выдал генератор случайных чисел? В таблице Расходных накладных его нет и он там не нужен.

    Вы можете создать технический скрытый атрибут на карточке Расходных накладных который будет хранить случайное число
    Или же создать отдельный тип (с атрибутами как из последней таблицы) в котором будете создавать экземпляр(строку) с заполненными полями прямо из бп при помощи алгоритмов

  • отредактировано 24 апр

    Я так понимаю, что Ваше предложение сделать технический атрибут фактически предлагает развязать таблицы предметной области (заявки, документы) и таблицы для БП. То, что они совпадают своими атрибутами - это частный случай для практикумов )
    Именно об этом я писал выше "2. Как методологически правильно связывать БП с Типом данным? К примеру, у нас есть документ "Расходная накладная", мы этот тип данных наследовали от объекта "Документ". При конструировании какого-то БП нам нужно пользоваться (писать и читать) данными и этого типа данных и других и в т.ч. нужны специфические атрибуты для исполнения БП не имеющими отношения к Документам. Не правильным ли будет для каждого БП создавать свои Тип Данных в общем случае?"

    Но вопрос все же остается. Если сделать скрытый артибут в Расходной накладной и запустить 5 параллельных экземпляров этого процесса. То в каждом из них будет своё число из генератора случайных чисел, а расходная накладная у нас одна с этим одним техническим скрытым атрибутом. Где будет хранится все эти значения параллельных процессов?

    Создать отдельный тип и туда писать - это понятно, спасибо. Интересно, как сделать оптимальней.

  • Тех скрытый атрибут можно сделать объектным:
    Создать новый тип объекта "Результаты генерации числа" с полем "Результат генерации"
    Этот тип связать с типом "Расходная накладная" как дочерний объект например
    И если Расходная накладная 5 раз пройдет бп, то алгоритм(нужно настроить на сервисном действии в бп) при помощи функции newInstance() создаст по экземпляру типа "Результаты генерации числа" и в каждый экземпляр запишет свое уникальное число
    В алгоритме который будет создавать объекты так же нужно указать связь с текущей расходной накладной которая является маршрутным объектом

    Итого когда Расходная накладная 5 раз прошла по бп, у нее сформировался реестр объектов типа "Результаты генерации числа" в каждом из которых свое уникальное число

  • Да, тоже выход, согласен.
    По моему скромному мнению удобнее было бы ввести понятие Атрибут в БП и иметь возможность связывать некоторые атрибуты БП с некоторыми атрибутами маршрутных объектов и вообще объектов. Тогда было бы всё просто как мне кажется.

Войдите или Зарегистрируйтесь чтобы комментировать.