XFormat ノードを使用して、PHP を使用した API 呼び出しから JSON POSTFIELDS を取得することにしました。以下は、JSON 文字列から XMLDocument に変換された XML データの結果です。
<root>
<salesValue>5000</salesValue>
<authorId>2</authorId>
</root>
https://developers.flowgear.net/kb/Node:XPath_Matchから読んで、興味のある値を取得して SQL クエリに挿入するために、次の xpath を思いつきました。
- salesValue:root/salesValue
- 作成者 ID:root/作成者 ID
そのプロパティのエスケープ値として XML を選択しましたが、どちらが適切かわかりません。私が得ているエラーは次のとおりです。
(XFormat 1.0.0.1): 名前空間プレフィックス 'salesValue' が定義されていません。
問題は、これらの値を取得しようとして xpath をフォーマットした方法にあると思います。XFormat ノードの式プロパティの SQL クエリを以下に示します。
SELECT `Book`.`id` , `Book`.`name` , `Book`.`isbn` , `Book`.`quantity_in_stock` , `Book`.`price` , (`Book`.`quantity_in_stock` * `Book`.`price`) AS `sales`,
concat(`Author`.`name`, ' ', `Author`.`surname`) AS `author` FROM `books` AS `Book` LEFT JOIN authors AS `Author` ON ( `Book`.`author_id` = `Author`.`id` )
WHERE (`Book`.`quantity_in_stock` * `Book`.`price`) > {salesValue} AND `Book`.`author_id` = " {authorId}"
これらの値をそのクエリに挿入すれば、先に進むことができます。以下は、API を介してワークフローを呼び出すために使用するスクリプトです。
try{
$results = invokeFlowgear("https://domain.flowgear.io/authorbooksaleslist", "login", "passwrd", 30,
array(
'salesValue' => 5000.00,
'authorId' => 2
));
var_dump($results);
}catch(Exception $exc){ print $exc->getMessage(); }
前もって感謝します...