Definizione di un'espressione condizionale Java per una trasformazione

È possibile utilizzare un metodo Java™ per impostare l'espressione condizionale che determina se una trasformazione viene applicata in una mappa del messaggio.

Informazioni su questa attività

Per definire l'espressione condizionale, è possibile definire un'espressione XPath o una chiamata a un metodo statico su una classe Java importata. È inoltre possibile creare un'espressione composta (nidificata) che includa XPath, Java e funzioni di estensione come iib:getUserDefinedProperty("propertyname").

Nota: quando si definisce un'espressione condizionale Java, si applicano le seguenti regole:
  • È possibile utilizzare metodi Java che utilizzano solo tipi Java standard.
  • Non è possibile utilizzare metodi Java che includono argomenti di tipo di dati MbElement .
  • È possibile utilizzare metodi Java che utilizzano l' API DOM. Per ulteriori informazioni sui tipi supportati, consultare Java personalizzato.
Nota: se si definisce un'espressione condizionale per una trasformazione e si realizza che la condizione è identica per altre trasformazioni nella mappa, modificare la trasformazione in una trasformazione If . L'espressione condizionale rimane immutata e la trasformazione viene spostata all'interno del livello nidificato della trasformazione If . Quindi, inserire tutte le trasformazioni che dipendono dalla stessa condizione nell'associazione nidificata If .

Procedura

Completare la seguente procedura per impostare un'espressione condizionale in una trasformazione:

  1. Creare una mappa del messaggio.
    Quando si utilizza il codice Java in una mappa, è possibile definire la mappa in un progetto di libreria statica, in un progetto di libreria condivisa, in un progetto di applicazione o in un progetto di integrazione. È possibile definire il codice Java in uno o più progetti Java. Il progetto mappa deve fare riferimento a questi progetti Java. Per ulteriori informazioni, consultare Aggiunta di un progetto a un'applicazione, un servizio di integrazione o una libreria
    Nota: quando la mappa utilizza il codice Java disponibile in una libreria condivisa, è necessario creare la mappa nel progetto della libreria condivisa in cui è disponibile il codice Java.

    Per ulteriori informazioni, fare riferimento a Creazione di mappe di messaggi.

  2. Creare un progetto Java.

    Per ulteriori informazioni, consultare Creazione di un progetto Java.

  3. Creare classi di oggetti Java.

    La classe Java fornita all'associazione deve avere metodi statici che restituiscono valori booleani.

    Ad esempio, il seguente metodo Java potrebbe essere utilizzato per definire un'espressione condizionale su una trasformazione:

    
    public static boolean lessThanHund(BigDecimal val) {
    		if ( val.intValueExact() < 100 )
    			return true;
    		return false;
    	}	
    	
  4. Accertarsi che il progetto Java in cui si trova la classe sia indicato come riferimento dal progetto che contiene la mappa.

    Prima di creare un riferimento ad un progetto Java, assicurarsi che la classe Java sia disponibile in un progetto Java nel workspace.

    1. Nella pagina Sviluppo applicazione , fare clic con il pulsante destro del mouse sul progetto in cui è definita la mappa.
    2. Selezionare Progetti inclusi gestiti.
    3. Selezionare il progetto Java e fare clic su OK.
  5. Rendere la classe Java visibile in qualsiasi punto della mappa. A meno che non sia stato già utilizzato un metodo dalla classe Java in una trasformazione Java personalizzata altrove nella mappa, è necessario creare manualmente una importazione per la classe. Per importare manualmente la classe Java, è possibile configurare la scheda Importazioni Java nella pagina Proprietà della mappa:
    1. Selezionare Aggiungi.
    2. Fare clic su Sfoglia.
    3. Nel campo Seleziona voci , immettere il nome del pacchetto Java che contiene la classe Java.
      Nota: è necessario iniziare a immettere il nome del pacchetto Java prima di poter visualizzare le classi da scegliere nel campo Seleziona voci .
    4. Selezionare una classe Java
    5. Fare clic su OK.
    6. Immettere un valore univoco nel campo Prefisso .
    Nota: se il progetto Java che contiene la classe Java non viene creato in Eclipse, la classe Java non è visibile nell'associazione. È necessario risolvere tutti gli errori Java prima di poter configurare la scheda Importazioni Java nella pagina Proprietà della mappa. È possibile vedere gli errori nella scheda Problemi .

    quando si aggiunge una chiamata Java nella scheda Generale della pagina Proprietà di una trasformazione Java personalizzato nella mappa, viene aggiunta automaticamente un'importazione nella mappa per fare riferimento alla classe Java qualificata del package e viene aggiunto un prefisso basato sul nome della classe. Tutti i metodi statici pubblici in questa classe Java sono disponibili nell'assistente ai contenuti quando si creano espressioni in altre trasformazioni. Se si desidera utilizzare questa classe, è possibile ignorare questo passo.

  6. Per elementi non ripetuti, selezionare la proprietà Condizione nella scheda Proprietà ed immettere un metodo Java.
    Nota: utilizzare sempre l'assistente ai contenuti per selezionare il nome della variabile degli elementi di input utilizzati per definire le espressioni. Se non si utilizza l'assistente ai contenuti, è possibile che si stia utilizzando un nome elemento non corretto e che la mappa abbia esito negativo al runtime.
    È possibile identificare il metodo Java nell'assistente ai contenuti utilizzando il prefisso. Ad esempio, nella figura seguente il prefisso è Condizionali e il metodo è lessThanHund():
    Conditionals:lessThanHund( $element11)

    Figura che mostra un'espressione Java in una trasformazione Move.

    Nota: se l'elemento di input utilizzato per fornire un valore per un metodo Java non è del tipo corretto, è possibile utilizzare una funzione cast di tipo, ad esempio xs:int ($var), per impostare il tipo richiesto. Per ulteriori informazioni, vedere Tipo di cast (xs: type).
  7. Per gli elementi ripetuti, selezionare la proprietà Input filtro nella scheda Proprietà e immettere un metodo Java applicato a ciascuna istanza dell'elemento ripetuto.

Risultati

Se il metodo Java restituisce true, la trasformazione viene applicata all'elemento di input.

Esempio

È possibile chiamare il seguente metodo Java quando si definisce un'espressione condizionale in una mappa:

 
public static boolean evalNodeCondition(Node inputNode, String hasChildNamePrefixed) 
    { boolean result = false; 
      if ( inputNode != null ) { 
            Node fcn = inputNode.getFirstChild(); 
            if ( fcn != null ) { result = fcn.getLocalName().startsWith(hasChildNamePrefixed); 
            } 
     } 
return result;

Cosa fare successivamente

Distribuire e verificare la mappa del messaggio. Per ulteriori informazioni, consultare Risoluzione dei problemi di una mappa del messaggio.