Esempio: script di Maximo Business Rules

Vengono forniti diversi esempi per illustrare come utilizzare il linguaggio MBR (Maximo ® Business Rules ) in diversi scenari di script comuni.

Esempio: aggiunta di un MBO a MBOSet

Quando un nuovo asset viene aggiunto con un tipo di asset GASENG, il record aggiunge due contatori al MBOSet contatore dell'asset. I contatori sono O-PRESSUR e IN-PRESSUR.

Procedura
  1. Nell'applicazione Script di automazione, creare uno script che abbia un punto di avvio oggetto.
  2. Specificare il nome del punto di avvio e selezionare l'oggetto ASSET.
  3. Nella sezione Eventi, selezionare l'evento Salva .
  4. Nella sezione Salva, specificare il contesto per l'evento e selezionare Aggiungi e Prima del salvataggio.
  5. Nella sezione Script, selezionare l'opzione per aggiungere uno script e passare alla pagina successiva.
  6. Specificare un nome script e impostare il livello di log su debug. Passare alla pagina successiva.
  7. Incollare il codice sorgente che segue nel campo Codice sorgente e fare clic su Crea per aggiungere lo script.
    #my first MBR code for asset
    setvar("isgaseng",(assettype == "GASENG" && countf("assetmeter")==0))
    if(getvar("isgaseng"),invokescript(":createmeters"))
    
    #my MBR function that will add the two meter MBOs to the asset MBO
    :createmeters
    newmbo("opressure","assetmeter")
    setvaluetombo("opressure","metername","O-PRESSUR")
    newmbo("inpressure","assetmeter")
    setvaluetombo("inpressure","metername","IN-PRESSUR")

Analisi

Questo script contiene due righe di codice principale e una funzione. Lo script viene eseguito quando un utente salva le modifiche a un record asset. Nel codice principale, viene implementata la seguente logica:

  1. Creare una variabile locale e impostare la variabile su TRUE se entrambe le seguenti condizioni sono vere:
    • Il tipo di asset è GASENG.
    • Il MBOSet del contatore dell'asset è vuoto.
  2. Valutare la variabile locale. Se la variabile locale è TRUE, richiamare una funzione per aggiungere MBO al MBOSet del contatore dell'asset. Nella funzione createmeters, è implementata la seguente logica:
    1. Aggiungere un MBO al MBOS del contatore dell'asset.
    2. Impostare il nome dell'MBO su O-PRESSUR.
    3. Aggiungere un secondo MBO al MBOS del contatore dell'asset.
    4. Impostare il nome del secondo MBO su IN-PRESSUR.

Lo script utilizza due variabili interne, assettype e assetmeter per derivare il tipo di asset e il contenuto del MBOSet del contatore dell'asset.

Poiché questo script viene eseguito quando un utente salva le proprie modifiche, il framework di transazioni dell'applicazione salva ed esegue il commit degli MBO appena creati come parte della transazione principale.

È possibile spostare il codice funzione createmeters in uno script della libreria. Ad esempio, è possibile spostare il codice funzione createmeters in uno script della libreria chiamato anche createmeters e quindi richiamare lo script della libreria nella seguente istruzione:

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

Esempio: manipolazione delle date

Se un asset ha un tipo di BUS, effettuare le seguenti azioni:
  • Impostare la data di fine vita sulla data di installazione più un anno. Se l'asset non dispone di una data di installazione, impostare la data di fine vita sulla data corrente più un anno.
  • Rendere l'attributo di priorità obbligatorio.
Procedura
  1. Nell'applicazione Script di automazione, creare uno script che abbia un punto di avvio attributo.
  2. Specificare il nome del punto di avvio e selezionare l'oggetto ASSET e l'attributo ASSETTYPE.
  3. Nella sezione Eventi, selezionare l'evento Convalida .
  4. Nella sezione Script, selezionare l'opzione per un nuovo script e passare alla pagina successiva.
  5. Specificare un nome script e impostare il livello di log su debug. Passare alla pagina successiva.
  6. Incollare il codice sorgente nella sezione seguente nel campo Codice sorgente e fare clic su Crea per aggiungere lo script.
    if(assettype=="BUS",setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0)))
    if(assettype=="BUS",setrequired("priority",TRUE),setrequired("priority",FALSE))

Analisi

Questo script viene eseguito quando il tipo di asset viene modificato. Nello script, viene implementata la seguente logica:

  • Se l'asset ha un tipo di BUS, impostare la data di fine vita:
    1. Valutare la data di installazione dell'asset.
    2. Se la data di installazione è vuota, impostare la data di fine vita sulla data corrente più un anno.
    3. Se la data di installazione è popolata, impostare la data di fine vita sulla data di installazione più un anno.
  • Se l'asset ha un tipo di BUS, rendere l'attributo di priorità obbligatorio. Se l'asset non ha un tipo di BUS, rendere l'attributo di priorità facoltativo.
Per entrambe queste azioni, lo script controlla se l'asset ha un tipo di BUS, che è inefficiente. È possibile migliorare lo script definendo una funzione, spostando entrambe le azioni nella funzione e richiamando la funzione se l'asset ha un tipo di BUS. Il seguente codice dimostra questo miglioramento:
if(assettype=="BUS",invokescript(":seteol"),setrequired("priority",FALSE)) 
:seteol
setvalue("estendoflife",nvl(installdate,now())+duration(1,0,0,0,0,0))
setrequired("priority",TRUE)

Lo script utilizza le variabili interne assettype, estendoflife e installdate per derivare i valori del tipo, della data di fine vita e della data di installazione dell'asset.

Esempio: impostazione di attributi su oggetti duplicati

Quando un ordine di lavoro viene duplicato, copiare il numero dell'ordine di lavoro originale in un attributo personalizzato nell'OdL duplicato.

Procedura
  1. Nell'applicazione Script di automazione, creare uno script che non abbia un punto di avvio.
  2. Specificare un nome script WORKORDER.DUPLICATE.
  3. Specificare MBR come linguaggio di script, se non è specificato.
  4. Incollare il codice sorgente seguente nel campo Codice sorgente e fare clic su Crea per aggiungere lo script:
    setvaluetombo("dupmbo","copiedfrom", wonum)

Analisi

Il nome script garantisce che questo script venga eseguito quando un ordine di lavoro viene duplicato. Lo script copia il numero ordine di lavoro originale in un attributo personalizzato nell'ordine di lavoro duplicato.

Lo script utilizza le variabili interne wonum, dupmbo e copiedfrom per derivare i valori del numero di ordine di lavoro originale, il numero di ordine di lavoro duplicato e l'attributo personalizzato nell'OdL duplicato.