Я решил использовать узел XFormat для получения моих JSON POSTFIELDS из вызова API с использованием PHP. Ниже
результат XML-данных, преобразованных из строки JSON в XMLDocument:
<root>
<salesValue>5000</salesValue>
<authorId>2</authorId>
</root>
Чтение из https://developers.flowgear.net/kb/Node:XPath_Match Я придумал следующие xpaths
чтобы получить те значения, которые меня интересуют, и вставить их в мой SQL-запрос:
Я выбрал XML в качестве экранирующего значения для этого свойства, но не уверен, каким оно должно быть. Я получаю ошибку:
(XFormat 1.0.0.1): Префикс пространства имен ‘salesValue’ не определен.
Я предполагаю, что проблема заключается в том, как я отформатировал свой xpath, пытаясь получить эти значения. Запрос SQL в свойстве expression моего узла XFormat показан ниже:
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}"
Если в этот запрос будут введены эти значения, я смогу двигаться вперед. Ниже приведен скрипт, который я использую для вызова WORKFLOW через 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(); }
Заранее спасибо…
Значения в ваших пользовательских свойствах должны содержать только xpaths, а имена пользовательских свойств должны соответствовать вашим заполнителям в выражении.
Вы можете найти документацию на https://developers.flowgear.net/kb/Node:XFormat#Examples
Адрес элемента в Xpath может содержать до трех частей:
foo
, html
— это обязательноn1:foo
, xhtml:html
— Нет префикса, значит нет пространства имен children::foo
, following-sibling::xhtml:div
— по умолчанию children
Ваш XML не имеет пространств имен. Это просто хорошо сформировано. Поэтому указание ‘salesValue’ или ‘authorId’ в качестве префикса пространства имен является неправильным.
Адресация значений из корня документа:
/root/salesValue
/root/authorId
Я думаю, что test1: в примере связанная страница просто для того, чтобы предоставить идентификатор для выражения Xpath, а не его часть.