以下の一般的なタスクについての PHP API コードの例を、ユーザー独自の PHP コードを作成してパターン・インスタンスを変更する際にお役立てください。
<?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) { }
}
以下の例に示すように、PHP から MyClass クラスを実行できます。 $class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass") という行の最初の引数 com.your.company.domain.code は、Java クラスが含まれるプラグインの ID です。 2 番目の引数 com.your.company.domain.code.MyClass は、クラスの名前です。
<?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) { }
}
以下の例に示すように、PHP から MyClass クラスを実行できます。 $class = $pim->getPluginClass("com.your.company.domain.code", "com.your.company.domain.code.MyClass") という行の最初の引数 com.your.company.domain.code は、Java クラスが含まれるプラグインの ID です。 2 番目の引数 com.your.company.domain.code.MyClass は、クラスの名前です。 クラスの新しいインスタンスが、行 $obj = $class->newInstance() で作成されます。 この例の最後の行では、クラスの doSomethingUseful() メソッドが実行されます。
<?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";
}
?>
配列の構造は次のとおりです。
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"
}
}
}