Schreiben Sie anhand der folgenden Beispiele für PHP-API-Code für allgemeine Aufgaben einen eigenen PHP-Code zum Ändern von Musterinstanzen.
<?php
if ($_MB['PP']['includeErrorHandling'] == 'true') {
mb_pattern_run_template("Transform", "mqsi/example.esql.php", "mqsi/example.esql");
}
?>
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;
}
?>
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);
}
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") gibt das erste Argument, com.your.company.domain.code, die ID des Plug-ins an, 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!");
?>
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") gibt das erste Argument, com.your.company.domain.code, die ID des Plug-ins an, das die Java-Klasse enthält. Das zweite Argument, com.your.company.domain.code.MyClass, ist der Name der Klasse. In der Zeile $obj = $class->newInstance() wird eine neue Instanz der Klasse erstellt. In der letzten Zeile des Beispiels wird die Methode doSomethingUseful() 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!");
?>
<?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";
}
?>
Die Feldgruppe 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"
}
}
}