Proprietà definite dall'utente

La proprietà UDP (User-Defined Property) è una proprietà definita quando si crea un flusso di messaggi utilizzando l'editor Flusso di messaggi. Questa proprietà può essere utilizzata dai nodi Compute, JavaCompute, .NETCompute e Mapping.

Il vantaggio delle UDP è che il loro valore può essere modificato al momento della distribuzione e al runtime. Non è necessario modificare i programmi applicativi. Ad esempio, se si utilizzano le UDP per conservare i dati relativi al proprio centro di elaborazione, è possibile configurare un flusso di messaggi per una macchina, un'attività o un ambiente particolare durante la distribuzione, senza la necessità di modificare il codice al livello di nodo del messaggio.

Quando si avvia l'editor Flusso di messaggi per creare un flusso di messaggi o modificarne uno esistente, così come per stabilire quali nodi siano richiesti nel flusso di messaggi, è possibile utilizzare l'opzione (mediante la relativa scheda) che consente di definire e fornire i valori iniziali ad alcune proprietà definite dall'utente. Utilizzare la scheda Proprietà definite dall'utente nella parte inferiore della finestra di modifica. Consultare Message Flow editor per ulteriori informazioni. È inoltre possibile definire una UDP a livello di server di integrazione, aggiornando il file di configurazione server.conf.yaml .

È possibile accedere agli UDPs nei seguenti modi:
  • Da un nodo Mapping all'interno di una Graphical Data Map. Utilizzare la funzione XPath personalizzata iib:getUserDefinedProperty("propertyname") ; consultare Accessendo le proprietà definite dall'utente da un nodo Mapping. È inoltre possibile accedere a UDPs da ESQL personalizzato che viene richiamato da una mappa.
  • Da un nodo JavaCompute , richiamando il metodo getUserDefinedAttribute .
  • Da un nodo Compute , utilizzando un'istruzione DICHIARATA con la parola chiave EXTERNAL, che può anche fornire un default.
  • Da un .Nodo NETCompute , chiamando il metodo GetUserDefinedProperty .

Consultare Istruzione DECLARE per i dettagli dell'istruzione DECLARE e consultare Accesso alle proprietà definite dall'utente del flusso di messaggi da un nodo JavaCompute per ulteriori informazioni su come utilizzare una UDP in un nodo JavaCompute .

Se si utilizza ESQL per accedere al proprio UDP, il valore che si dà a un UDP quando lo si definisce in un flusso di messaggi sovrasta il valore di quella variabile nel proprio programma ESQL.

È possibile modificare anche il valore di una UDP in fase di distribuzione utilizzando l'editor Archivio broker per modificare il file BAR. Questo valore sovrascrive quello impostato durante la definizione del flusso di messaggi.

È inoltre possibile modificare il comportamento di un flusso di messaggi in fase di esecuzione utilizzando l'API REST di gestione per modificare i valori delle proprietà definite dall'utente sul flusso di messaggi. Per ulteriori informazioni, consultare Setting message flow user - defined properties at run time utilizzando l'amministrazione REST API.

Il valore dell'UDP è impostato al livello di flusso di messaggi ed è lo stesso per tutti i nodi idonei contenuti nel flusso. Un nodo idoneo è un nodo che supporta le UDP ed è compreso nell'ambito della dichiarazione che specifica l'UDP nell'applicazione. Ad esempio, se si utilizza l'editor Flusso di messaggi per modificare il valore di una proprietà utente chiamata timezone, che è dichiarata in uno schema chiamato mySchema, in un flusso di messaggi denominato myFlow, l'UDP è disponibile durante il runtime per tutti i nodi in myFlow che supportano le UDP e rientrano in mySchema.

  • Se si utilizza l'editor di Message Flow per modificare il valore di una proprietà definita dall'utente in un flusso secondario, la nuova proprietà modificata è disponibile a tutti i nodi del sottoflusso che supportano le UDPs e che rientrano nell'ambito della dichiarazione. La proprietà non è disponibile, ad esempio, per i nodi nel flusso principale.
  • Se un nodo all'interno di un sottoflusso accede a un UDP e se il sottoflusso non definisce UDP, il flusso principale viene ricercato per una definizione di UDP in fase di esecuzione. Se il flusso principale non definisce l'UDP ed è anche un sottoflusso, il genitore di questo sottoflusso viene ricercato per una definizione di UDP. Il processo di ricerca continua in questo modo ricorsivo verso l'alto attraverso la catena dei flussi secondari e dei flussi di genitori fino alla definizione della definizione UDP, oppure fino a raggiungere il flusso di primo livello.
Per avere un valore che sia disponibile sia per il principale che per il sottoflusso, definire UDPs in uno dei seguenti modi:
  • Definire gli UDPs nel sottoflusso e poi promuoverli al flusso principale. Impostare il valore nel flusso principale.
  • Definire gli UDPs solo nel flusso principale e consentire al subflusso di individuare il valore UDP nel flusso principale in fase di esecuzione.

Controllo delle proprietà definite dall'utente al runtime

È possibile eseguire delle query alle proprietà definite dall'utente, individuarle e impostarle nel runtime per modificare dinamicamente il funzionamento di un flusso di messaggi. È possibile utilizzare l'API REST API per manipolare queste proprietà, che possono essere utilizzate da uno strumento di monitoraggio dei sistemi per eseguire azioni automatizzate in risposta a situazioni che rileva nei sistemi monitorati.

Se le proprietà definite dall'utente definite nei flussi secondari vengono rinominate durante la promozione e si desidera sovrascriverle al runtime utilizzando l'interfaccia utente web IBM App Connect Enterprise , potrebbe essere necessario farlo per i diversi nomi.

Ad esempio, un flusso di messaggi contiene un nodo Route , utilizzato per differenziare le classi di cliente definite nel messaggio. Il nodo Route ha una proprietà definita dall'utente chiamata ProcessClasses, impostata con il valore iniziale di All. Quando ProcessClasses è impostato su Tutti, il nodo instrada i messaggi da tutte le classi del cliente al primo terminale per un'elaborazione immediata.

Quando vengono rilevate determinate condizioni (ad esempio, il sistema di monitoraggio rileva che il carico di richiesta sta causando l'abbassamento del livello di servizio al di sotto del proprio target), il nodo Route deve essere impostato per passare le richieste da solo clienti di classe "Gold" per l'elaborazione immediata, mentre altre richieste del cliente vengono inviate ad un altro terminale di output, che li code per successive elaborazioni batch. Pertanto, l'applicazione di controllo imposta ProcessClasses su Gold in modo che il nodo Route instrada i messaggi meno critici al secondo terminale.

Per conoscere rapidamente la funzione di una proprietà definita dall'utente e i valori che può avere, adottare una convenzione di denominazione adatta. Ad esempio, una proprietà definita dall'utente che viene denominata property01, con un valore iniziale di valueA non è utile come una proprietà che venga denominata RouteToAorB e con un valore iniziale di RouteA.

Per informazioni su come utilizzare l'API REST per controllare le proprietà definite dall'utente al runtime, consultare Impostazione delle proprietà definite dall'utente del flusso di messaggi al runtime utilizzando l'API REST di amministrazione. Per ulteriori informazioni sull'API REST di amministrazione, vedi Gestione delle risorse utilizzando l'API REST di amministrazione.

Precedenza della sovrascrizione del valore della UDP

È possibile definire una proprietà definita dall'utente (UDP) nei seguenti modi:
  • Nel codice ESQL
  • Nell'editor Flusso di messaggi
  • Tramite un file di sostituzione file BAR prima della distribuzione del file BAR
  • Utilizzando l'API REST API

La sovrascrittura del file BAR ha la precedenza sulle modifiche nell'editor Flusso messaggi e le modifiche nell'editor Flusso messaggi hanno la precedenza su quelle nel codice ESQL.

La precedenza dei valori per le proprietà definite dall'utente viene mostrata nella seguente sequenza:
  1. La proprietà definita dall'utente ProcessClasses è impostata su All in un file BAR del flusso di messaggi. Dopo la distribuzione del file BAR, il valore di ProcessClasses è All.
  2. Una sovrascrittura di proprietà definita dall'utente è impostata su Gold utilizzando l'API REST API. Una volta completato correttamente questo metodo, il valore di ProcessClasses è Gold.
  3. Il nodo o il server di integrazione viene chiuso e riavviato. Il valore di ProcessClasses ritorna a Tutti perché l'aggiornamento API REST non è persistente.
  4. Una sovrascrittura di proprietà definita dall'utente è impostata su Gold utilizzando l'API REST API. Una volta completato correttamente questo metodo, il valore di ProcessClasses è Gold.
  5. Il file BAR del flusso originale viene ridistribuito. Dopo la distribuzione, il valore di ProcessClasses è All.