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 бегающего по записям

Создание нового представления (View) с нуля и размещение его на новом Screen

Определения:


  • Экран (Screen) - каждая запись в навигаторе

  • Представление (View) - это то, что размещается на экране и то, на чём размещаются аплеты

  • Аплет (applet) - это то, где выводится (или вводится) информация. Аплеты бывают нескольких типов (лист-аплет, форм-аплет, mvg-аплет и так далее). Каждый аплет может иметь от одного до нескольких видов "applet mode".  "applet mode" указывается в представлении содержащем данный аплет. Нельзя поместить в одно представление один и тот же аплет в разных "applet mode".

Иерархия:

в одной конфигурации (для нас это Siebel Financial Services. Указывается в файле настроек сибеля

[Siebel]
ApplicationName = Siebel Financial Services) может содержаться несколько экранов.

в одном экране может быть несколько категорий (Agregate Category).
в каждой категории может быть несколько представлений
в каждом представлении может быть несколько аплетов

Создание с нуля. Коротко:


  1. Создать аплет (аплеты)

  2. Создать представление (view) и поместить на него созданный аплет (аплеты)

  3. Раздать права на ново созданное представление (зайти в браузерном клиенте в навигатор и выбрать пункт "Administration - Application\Views"

  4. Создать экран

  5. В созданном экране создать хотя бы одну запись типа "Agregate Category". Потом создать запись типа "detail view" указывающую на ново созданное представление.

  6. Добавить ново созданный экран в нашу текущую конфигурацию (для чего надо в тулсах среди Application выбрать Siebel Financial Services\Siebel Menu Item и создать новую строку со своим экраном). Если мы хотим чтобы наш экран всегда был открыт в образуемом клиенте то его надо добавить также в Siebel Financial Services\Page Tab

  7. После чего необходимо скомпилировать все созданные и изменённые объекты в репозиторий и подложить его на сервер

Создание с нуля. Подробно

Пункт1. Создание нового аплета

В тулсах выбрать в меню File\New Object...

В открывшемся диалоговом окошке перейти на вкладу "аплеты" и выбрать тип создаваемого аплета. Далее следует выбрать параметры аплета и его наполнение

Создание нового аплета сложности не представляет и не будет расписываться подробно

Пункт2. Создать представление и поместить на него аплеты

Новое представление также создаётся путём выбора в тулсах меню File\New Object... и выбора пункта "View".

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

Пункт3. Раздача прав на созданное представление

В браузерном клиенте войти в навигатор () и зайти в "Administration - Application\Views"

Внимание: В список "Views" вам нужно внести имя своего представления (то есть создать новую запись). В список "Responsibilites" необходимо добавить сибель-админ и урса-админ чтобы новое представление мог видеть хотя бы sadmin

Пункт4 и пункт5. Создание экрана

В тулсах создать новый экран путём создания новой записи в списке экранов

Внимание: Выбирать используемое по умолчанию представление (на рис ниже обведено красным) при создании не нужно. Его нужно будет выбрать когда в экран уже будет добавлено хотя бы одно представление.

Далее мы создаём записи в "Screen View" (см выше на два рисунка, выделено серым).

Сначала создаётся хотя бы одна запись типа "Agregate Category" на которую будут ссылаться сколько угодно записей типа "detail view" содержащие имена наших представлений которых мы хотим разместить внутрь экрана

вот запись типа "Agregate Category" имеющая имя "Дет инф"

а вот запись типа "detail view" ссылающаяся на запись "Дет инф" (то есть она будет размещена у неё внутри)

и продолжение рисунка:

В браузерном клиенте экран будет выглядеть примерно так:

Внимание: порядок в котором будут показываться вкладки представлений определяется через поле Sequence (выделено синим на один рисунок назад). Можно определить вручную, но лучше использовать пункт "Edit Screen View Sequence" контекстного меню возникающего при нажатии правой клавиши на экран в тулсах

Внимание: экран не имеющий ни одного представления или если теущий пользователь не имеет прав на представления в нём то экран показываться в навигаторе не будет

причины почему экран может отсутствовать в гуиhttp://docs.oracle.com/cd/B40099_02/books/ConfigApps/ConfigApps_Procedures_UI_layer16.html#wp1118699

Внимание: после создания экрана не забудьте выбрать для него "default view" (см выше в этом пункте).

Пункт6. Добавление экрана в конфигурацию (кажется правильно это называется Application)

Siebel Menu Item - чтобы экран можно было открыть через навигатор в бразуерном кленте

Page Tab - чтобы экран автоматом открывался при входе в браузерный клиент у всех кому разрешены права на этот экран