Category: образование

Category was added automatically. Read all entries about "образование".

Замечания по разработке workflow-ов, их активации и диплою

Стадии разработки потока


1) Создание нового потока


  • Необходимо выбрать бизнес-объект (БО). Один воркфлов работает в пределах одного БО. (чтобы задать БО для воркфлова надо ткнуть в пустом месте воркфлова (выбрать его) и в свойствах воркфлова выбрать БО для него).

  • На каждую ноду можно выбрать свой собственный бизнес-компонент (БК). В пределах выбранного БО, разумеется

1.а)Предопределённые переменные в потоке


  • Error Code и Error Message - заполняются автоматически в случае ошибки. В этом случае выполнение идёт по связи "Error Exception" (красная линия) если она выходит из ноды где произошла ошибка. Если такой связи нет, то выполнение потока прерывается с ошибкой Error Message

  • Object Id - ай-ди записи с которой по умолчанию работает следующая нода потока. Если поток запускается по кнопке с аплета, то эта переменная будет равна ай-ди записи на которой стоит данный аплет. Если идёт select-из базы в какой-то query - ноде, то переменная будет равна ай-ди первой выбранной записи из набора (для перемещеения используется next record - нода и prevois record - нода).

1.б)Определение собственных переменных

Чтобы определить собственные переменные надо щёлкнуть на пустом месте потока (фон должен быть белым, если фон светло-жёлтый то вы не можете редактиовать поток, его для этого надо перевести в режим редактирования, смотри много ниже как). Снизу появится список переменных.
Здесь же можно задать значения по умолчанию для переменных. Также необходимо определить тип переменных (None, In, Out - то есть внутренние, входная, выходная или смешанная)
Желательно во время их редактирования не использовать клавиатурные комбинации для вставки/копирования в буфер текстовых строк. Честное слово, лучше пользоваться контекстным меню.

1.в) Замечания по нодам потока

                         
Для нод есть входные параметры, выходные и так называемые "Search Specification". В принципе если прописать в выходных параметрах ноды какое-то присвоение для переменной потока (не относящееся к операции выполняемой данной нодой), то оно также будет выполнено.
Чтобы редактировать входные параметры для ноды нужно выбрать её и перейти в нижнее окошко.
Для вышеприведённой ноды:
Входные параметры:
Учитывая, что это update-нода, то на вход подаются поля в БК которые я собираюсь обновить и их новые значения.
Search Specifiaction (так называемый where-параметр):
другими словами я собираюсь обновить все записи для указанного БК у который ай-ди равен переменной Object Id (кстати, это формат обращения к переменным потока в выражениях. Используя [&имя-переменной]
"[Id] = '" + [&Object Id] + "'"
Выходные параметры:
В вышеприведённом примере выходные параметры пусты (ибо мне нужно было лишь обновить). В качестве примера привожу выходные аргументы для Query-ноды
В данно случае я получаю в переменные потока поля БК для первой записи из выбранного набора. Если я захочу получить вторую и так далее, то я должен буду добавить к query-ноде next record -ноду. И, возможно, организовать цикл для перебора всех записей из выбранного набора.

1.г) Замечание по связям между нодами

Из ноды может выходить одна связь (connector) - чёрная линия и несколько связей обрабатывающих ошибок (error exception) - красная линия.

Существует специальный тип ноды "Decision Point" - представляющую из себя условие "Если". Из неё может выходить множество чёрных стрелок: для каждой определны условия и одна по умолчанию - если ни одно из условий не выполнено.

Настройка условий в связях происходит двойным щелчком по ним

На приведённом рисунке для выполнения условий необходимо чтобы переменная потока vCountAccRecord была не равна нулю и другая переменная потока (noRecord) была ложью

Очень важное замечание: можно сделать условие на неточный поиск, например "Err*"

1.д) Примеры выражений (expression) используемых в входных/выходных аргументах для нод


  • IIf(Left([Last Name], 3)='Smi','Y','N')  - Если поле БК Last Namе начинается на Smi, то выражение примет значение Y, иначе N


  • IIf([&Comment] IS NULL,[BCField], [&Comment])  - на этот раз мы работаем с переменной потока Comment

  • IIF([&InputError] IS NULL, [&Msg]+"(ok)", [&Msg]+"(error)")

  • [&Object Id] like '99-28B1T'

см

http://docs.oracle.com/cd/B40099_02/books/ToolsDevRef/ToolsDevRef_Operators8.html

2)Отладка нового потока (так называемая симуляция (Simulation))

2.а)Настройка для запуска симуляции

В тулсах меню View\Options\Debug

2.б)Запуск симуляции

Из режима редактирования или в object explorer встав на нужный вокрфлов выбрать в контекстном меню пункт Simulate...

Далее нажать на кнопку . После чего запуститься новый мобильный сибель-клиент (с собственным репозиторием, который можно посмотреть/настроеть в файле описанном в пункте CFG File пункт 2.а данного руководства)

Иногда симуляция не запускается или работает криво. В этом случае рекомендуется перезапустить тулсы.

2.в)Замечания по отладке


  • В начале (пока мы ещё стоим на первой после стартовой ноде) мы можем задать входные параметры для переменных потока ()

  • Отладку можно прервать в любой момент (нажав на кнопку в виде красного квадрата)

3)Диплой и активация потока

Из режима разработки или в object explorer встав на нужный вокрфлов есть четыре кнопочки


  • Expire - делает поток неиспользуемым (присваивает статус Not In Use)

  • Revise - создаёт новую копию потока со статусом In Progress (доступно для редактирования)

  • Publish - переводит поток в статус Compiled

  • Publish\Activate - делает тоже, что и Publish, но вдобавок и активирует поток (иногда это не срабатывает, поэтому предпочтительно сделать руками в навигаторе зайдя

    Administration - Buisnes Process \ Workflow Deploiment и там найти по имени и нажать кнопку "Active")

    Воркфловы не требуют компиляции в репозиторий

    Вокрфловы единственное, что можно запустить job-ом. Поэтому если вы хотите запускать бизнес-сервис, оборачивайте его в воркфлов.


Алгоритм диплоя(кажется в терминах сибеля это называется публикацией) и активации нового потока


  1. Создать его

  2. Отладить

  3. Нажать на кнопку Publish, потом на кнопку Publish\Activate (если он не активировался, то сделать это руками в браузерном клиенте через навигатор).

Алгоритм изменения существующего потока


  1. Встать на него в тулсах

  2. Нажать на кнопку Expire, потом на кнопку Revise и в дальнейшем изменять новую копию потока (старую копию (которая находится в статусе Not In Use можно удалить или сохранить на память))

  3. Далее всё как при создании нового воркфлова. Если вы изменили, а работает по старому, то надо заново активировать через навигатор (см выше как).

Эта нехитрая информация получена с помощью километров матюгов (взять хотя бы тот факт, что никто мне не рассказал о назначении кнопочек Expire/Revise и др, или о том, что условия задаются внутри связей или о назначении входных/выходных аргументов для нод и так далее). Если кто-то будет ей пользоваться и она покажется кому-то полезной, вы уж хотя бы мысленно поблагодарите меня (за сиё описание) и Илью (за то, что начал сибелёвский вики-проект).

ссылки:

http://docs.oracle.com/cd/B40099_02/books/BPFWorkflow/BPFWorkflow_examples6.html#wp1167217. Отличный пример WF бегающего по записям