Примеры сценариев Maximo Business Rules (MBR)

Предлагаются несколько примеров, иллюстрирующих использование языка Maximo Business Rules (MBR) в нескольких типовых сценариях.

Пример: Добавление MBO к MBOSet

Когда добавляется новый актив с типов актива GASENG, запись добавляет два счетчика к MBOSet счетчиков этого актива. Это счетчики O-PRESSUR и IN-PRESSUR.

Процедура
  1. В прикладной программе Сценарии автоматизации создайте сценарий с точкой запуска объекта.
  2. Задайте имя точки запуска и выберите объект ASSET.
  3. В разделе События выберите событие Сохранить.
  4. В разделе Сохранить задайте контекст для этого события и выберите Добавить и Перед сохранением.
  5. В разделе Сценарий выберите опцию добавления сценария и перейдите к следующей странице.
  6. Укажите имя сценария и задайте для уровня ведения журнала значение debug. Перейдите к следующей странице.
  7. Вставьте исходный код, приведенный ниже, в поле Исходный код и нажмите кнопку Создать, чтобы добавить сценарий.
    #мой первый код MBR для актива
    setvar("isgaseng",(assettype == "GASENG" && countf("assetmeter")==0))
    if(getvar("isgaseng"),invokescript(":createmeters"))
    
    #моя функция MBR, которая добавит два MBO счетчиков к MBO актива
    :createmeters
    newmbo("opressure","assetmeter")
    setvaluetombo("opressure","metername","O-PRESSUR")
    newmbo("inpressure","assetmeter")
    setvaluetombo("inpressure","metername","IN-PRESSUR")

Анализ

Этот сценарий содержит две строки основного кода и функцию. Сценарий запускается, когда пользователь сохраняет изменения в записи актива. В основном коде реализована следующая логика:

  1. Создается локальная переменная и для этой переменной задается значение TRUE, если выполняются оба следующих условия:
    • Тип актива - GASENG.
    • MBOSet счетчиков для этого актива пуст.
  2. Оценивается эта локальная переменная. Если ее значение - TRUE, вызывается функция добавления MBO к MBOSet счетчиков этого актива. В функции createmeters реализована следующая логика:
    1. К MBOSet счетчиков этого актива добавляется MBO.
    2. В качестве имени этого MBO задается O-PRESSUR.
    3. К MBOSet счетчиков этого актива добавляется второй MBO.
    4. В качестве имени второго MBO задается IN-PRESSUR.

Этот сценарий использует две внутренние переменные - assettype и assetmeter - для получения типа актива и содержимого MBOSet счетчиков этого актива.

Поскольку этот сценарий запускается, когда пользователь сохраняет свои изменения, каркас транзакций прикладной программы сохраняет и принимает вновь созданные MBO как часть основной транзакции.

Можно переместить код функции createmeters в библиотечный сценарий. Например, можно переместить код функции createmeters в библиотечный сценарий, который также вызывает createmeters, а затем вызывать это библиотечный сценарий в следующем операторе:

if(getvar("isgaseng"),invokescript("createmeters"))

Пример: Обработка дат

Если тип актива - BUS, выполнить следующие действия:
  • Задать в качестве окончания срока службы дату установки плюс один год. Если у актива нет даты установки, задать в качестве окончания срока службы текущую дату плюс один год.
  • Сделать атрибут приоритета обязательным.
Процедура
  1. В прикладной программе Сценарии автоматизации создайте сценарий с точкой запуска атрибута.
  2. Укажите имя точки запуска и выберите объект ASSET и атрибут ASSETTYPE.
  3. В разделе События выберите событие Проверить.
  4. В разделе Сценарий выберите опцию нового сценария и перейдите к следующей странице.
  5. Укажите имя сценария и задайте для уровня ведения журнала значение debug. Перейдите к следующей странице.
  6. Вставьте исходный код из следующего раздела в поле Исходный код и нажмите кнопку Создать, чтобы добавить сценарий.
    if(assettype=="BUS",setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0)))
    if(assettype=="BUS",setrequired("priority",TRUE),setrequired("priority",FALSE))

Анализ

Этот сценарий запускается, когда изменяется тип актива. В сценарии реализована следующая логика:

  • Если тип актива - BUS, задается окончание срока службы:
    1. Оценивается дата установки актива.
    2. Если дата установки актива не заполнена, в качестве окончания срока службы задается текущая дата плюс один год.
    3. Если дата установки актива заполнена, в качестве окончания срока службы задается дата установки плюс один год.
  • Если тип актива - BUS, атрибут приоритета задается как обязательный. Если тип актива - не BUS, атрибут приоритета задается как необязательный.
Для каждого из этих действий сценарий выполняет проверку, является ли этот актив активом типа BUS, что не оптимально. Можно улучшить этот сценарий, определив функцию и переместив оба действия в эту функцию, вызываемую, если тип актива - BUS. Следующий код иллюстрирует такое усовершенствование:
if(assettype=="BUS",invokescript(":seteol"),setrequired("priority",FALSE)) 
:seteol
setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0))
setrequired("priority",TRUE)

Этот сценарий использует внутренние переменные assettype, estendoflife и installdate для значений типа, срок окончания службы и даты установки актива.

Пример: Задание атрибутов объектов при дублировании

При дублировании рабочего задания номер исходного рабочего задания дублируется в пользовательский атрибут дублированного рабочего задания.

Процедура
  1. В прикладной программе Сценарии автоматизации создайте сценарий без точки запуска.
  2. Задайте имя сценария - WORKORDER.DUPLICATE.
  3. Задайте в качестве типа сценария MBR, если он не задан.
  4. Вставьте следующий исходный код в поле Исходный код и нажмите кнопку Создать, чтобы добавить сценарий:
    setvaluetombo("dupmbo","copiedfrom", wonum)

Анализ

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

Этот сценарий использует внутренние переменные wonum, dupmbo и copiedfrom для значения номера исходного рабочего задания, номера дублированного рабочего задания и пользовательского атрибута дублированного рабочего задания.