Beispiele für PHP-API-Code

Schreiben Sie anhand der folgenden Beispiele für PHP-API-Code für allgemeine Aufgaben einen eigenen PHP-Code zum Ändern von Musterinstanzen.

Informationen zu dieser Task

Bei den folgenden Beispielen handelt es sich um PHP-Code, mit dem Sie bei der Erstellung benutzerdefinierter Muster allgemeine Tasks ausführen können:

Verfahren

  • Ausführen weiterer PHP-Scripts:
    Das folgende Beispiel zeigt, wie unter Verwendung der Funktion mb_pattern_run_template() ein PHP-Script mithilfe eines anderen PHP-Scripts ausgeführt werden kann. Die Funktion mb_pattern_run_template() verwendet dabei die folgenden Parameter:
    1. Als ersten Parameter erfordert mb_pattern_run_template() den Namen des Projekts, das die PHP-Vorlage enthält (in diesem Beispiel Transform).
    2. Als zweiten Parameter erfordert mb_pattern_run_template() den Namen des auszuführenden PHP-Scripts (in diesem Beispiel example.esql.php im Unterordner mqsi).
    3. Als dritten Parameter erfordert mb_pattern_run_template() den Namen der Datei, in die die Ausgabe geschrieben werden soll (in diesem Beispiel example.esql im Unterordner mqsi).
    Das benutzerdefinierte Muster in diesem Beispiel enthält einen booleschen Musterparameter mit dem Namen includeErrorHandling. Über diesen Musterparameter wird im Muster ein Kontrollkästchen erstellt:
    <?php
        if ($_MB['PP']['includeErrorHandling'] == 'true') {
            mb_pattern_run_template("Transform", "mqsi/example.esql.php", "mqsi/example.esql");
        }
    ?>
  • Verwendung von PHP-Scripts mit Markup für ESQL
    Im folgenden Beispiel enthält das benutzerdefinierte Muster einen Musterparameter mit dem Namen errorQueue, der die Werte none oder errorAction enthalten kann:
    BROKER SCHEMA mqsi
    <?php 
        if ($_MB['PP']['errorAction'] == 'errorQueue') {
            echo "DECLARE ErrorAction EXTERNAL CHARACTER '".$_MB['PP']['errorAction']."';";
    
            echo <<<ESQL
    
            CREATE FILTER MODULE CheckErrorAction
                CREATE FUNCTION Main() RETURNS BOOLEAN
                BEGIN
                    IF ErrorAction = 'errorQueue' THEN 
                        RETURN TRUE; 
                    ELSE
                        RETURN FALSE;
                    END IF;
                END;
            END MODULE;
    
    ESQL;
        }
    ?>
  • Verwendung von PHP-Scripts zum Entfernen von Dateien aus einem Projekt: Im folgenden Beispiel überprüft das Script zunächst den Wert des Musterparameters für das Kontrollkästchen, der die Musterparameter-ID pp1 hat. Wird dieser Parameter auf false gesetzt, werden mit dem Script die Dateien Log.msgflow und Log.esql aus dem Musterinstanzprojekt gelöscht. Nachrichtenflussdateien müssen mit der Funktion removeMessageFlow() gelöscht werden. Alle anderen Dateien können mit der PHP-Standardfunktion unlink() gelöscht werden:
    if ($_MB['PP']['pp1'] == 'false') {
    
        $pim = $_MB["PATTERN_INSTANCE_MANAGER"];
    
        $logmsgflow = $pim->getMessageFlow("Example_Flows", "mqsi/Log.msgflow");
        $pim->removeMessageFlow($logmsgflow);
    
        $piworkspace = $pim->getWorkspaceLocation();
        $piname = $pim->getPatternInstanceName();
        $logesql = $piworkspace . "/" . $piname . "_Example_Flows/mqsi/Log.esql";
        unlink($logesql);
    }
  • Ausführen von Java™ -Code aus PHP mithilfe einer statischen Java-Methode. Das folgende Beispiel zeigt eine Java-Klasse MeineKlasse, die aus einem PHP-Script heraus ausgeführt werden kann. Die Klasse enthält eine statische Methode:
    package com.your.company.domain.code;
    
    import com.ibm.broker.config.appdev.MessageFlow;
    import com.ibm.broker.config.appdev.patterns.GeneratePatternInstanceTransform;
    import com.ibm.broker.config.appdev.patterns.PatternInstanceManager;
    
    public class MyClass implements GeneratePatternInstanceTransform {
    
        public static void doSomethingUseful(String message) {
            System.out.println("Message received [" + message + "]");
        }
    	
        @Override
        public void onGeneratePatternInstance(PatternInstanceManager patternInstanceManager) { }
    }

    Sie können die Klasse MyClass wie im folgenden Beispiel aus PHP ausführen. In der Zeile$class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass"), das erste Argument,com.your.company.domain.codeist die ID des Plug-ins, das die Java-Klasse enthält. Das zweite Argument,com.your.company.domain.code.MyClass, ist der Name der Klasse.

    <?php
        $pim = $_MB["PATTERN_INSTANCE_MANAGER"];
        $class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass");
        java_import("com.your.company.domain.code.MyClass");     
        MyClass::doSomethingUseful("Hello!");
    ?>
  • Java-Code über PHP mit einer nicht statischen Java-Methode ausführen. Das folgende Beispiel zeigt eine Java-Klasse MeineKlasse, die aus einem PHP-Script heraus ausgeführt werden kann. Die Klasse enthält eine Methode, die nicht statisch ist:
    package com.your.company.domain.code;
    
    import com.ibm.broker.config.appdev.MessageFlow;
    import com.ibm.broker.config.appdev.patterns.GeneratePatternInstanceTransform;
    import com.ibm.broker.config.appdev.patterns.PatternInstanceManager;
    
    public class MyClass implements GeneratePatternInstanceTransform {
    
    		 public void doSomethingUseful(String message) {
    		 		 System.out.println("Message received [" + message + "]");
    		 }
    		 
    		 @Override
    		 public void onGeneratePatternInstance(PatternInstanceManager patternInstanceManager) { }
    }

    Sie können die Klasse MyClass wie im folgenden Beispiel aus PHP ausführen. In der Zeile$class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass"), das erste Argument,com.your.company.domain.codeist die ID des Plug-ins, das die Java-Klasse enthält. Das zweite Argument,com.your.company.domain.code.MyClass, ist der Name der Klasse. In der Zeile wird eine neue Instanz der Klasse erstellt.$obj = $class->newInstance(). In der letzten Zeile des BeispielsdoSomethingUseful()Methode der Klasse wird ausgeführt.

    <?php
        $pim = $_MB["PATTERN_INSTANCE_MANAGER"];
        $class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass");
        $obj = $class->newInstance();
        $obj->doSomethingUseful("Hello!");
    ?>
    
  • Tabellenwerte können mithilfe von PHP-Scripts gelesen werden. Im folgenden Beispiel extrahiert das PHP-Script die Werte aus einem Array, der in der superglobalen Variablen $_MB gespeichert ist. Zuerst sucht das Script im Array nach Werten, die in den Variablen event und response gespeichert sind, und gibt die Werte anschließend zurück:
    <?php
    	$pim = $_MB["PATTERN_INSTANCE_MANAGER"];
    	$table = $pim->getParameterTable("table1");
    	$count = $table->getRowCount();
    	for ($j=0;$j<$count ;$j++ ) {
    		echo "".$_MB['PP']['table1'][$j]['event']."';\n";
    		echo "".$_MB['PP']['table1'][$j]['response']."';\n";
    	}
    ?>
    

    Das Array hat folgende Struktur:

    array(4) {
     ["PATTERN_INSTANCE_MANAGER"]=>
     object(Java)#1 (0) {
     }
    	["PP"]=>
    		array(10) {
    			["queueName"]=>string(11) "QP.QUEUE.QS"
    			["configurePrefixSuffix"]=>string(5) "false"
    			["queuePrefix"]=>string(3) "QP."
    			["queueSuffix"]=>string(3) ".QS"
    			["logging"]=>string(5) "queue"
    			["generateMessageSet"]=>string(4) "true"
    			["table1"]=>
    			array(2) {
    			  [0]=>
    				  array(2) {
    					["event"]=>string(6) "event1"
    					["response"]=>string(9) "response1"
    				  }
    			  [1]=>
    				  array(2) {
    					["event"]=>string(6) "event2"
    					["response"]=>string(9) "response2"
    				  }
    			}
    	}