У меня есть таблица данных со списком книг. Ниже мое заявление 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`) > 5000.00
Запрос работает нормально, и рабочий процесс тоже работает отлично. Тем не менее, я хочу получить доступ к этому через API и сделать значение 5000,00 настраиваемым через переменную панель.
Вопрос в том, как сделать это возможным, чтобы при вызове моего API с конечной точкой ниже он работал?
https://domain.flowgear.io/5000booklist/{sales_value}
Я хочу иметь возможность повторно использовать мой рабочий процесс через API и просто передавать значение продаж, по которому я хочу запросить таблицу. Объем продаж может быть 2000 или 5000 в зависимости от того, чего я хочу достичь.
Book
,quantity_in_stock
* Book
,price
)> {salesValue} «в свойстве Expression, затем добавьте настраиваемое поле с именем salesValue и закрепите его в свойстве переменной bar salesValue. Установите Escaping в SQL.Если вы хотите вернуть JSON, преобразуйте результат из SQL-запроса в JSON с помощью JSON Convert, а затем прикрепите его к FgResponseBody и установите для FgResponseContentType значение ‘application / json’
@sanjay Я постараюсь дать вам обзор того, что я делал тогда, когда я экспериментировал с Flowgear через PHP, следуя инструкциям Вот.
Я не уверен, что вы также вызываете API-интерфейс Flowgear REST через PHP или любой другой язык, но, как я полагаю, логика должна оставаться прежней.
Что я сделал, так это обернул пример кода PHP CURL в класс, чтобы я мог использовать его повторно. Ниже приведен код, который я написал для простого запроса на выборку:
<?php
//Require the FlowgearConnect class
require_once '/path/to/flowgear_class_with_api_call.php';
try{
$workflow = new FlowgearConnect(return include 'endpoints.php');
$serial = $_POST['serial'];
$clientId = $_POST['client_id'];
//Get the results
$sql = '';
if(empty($serial)){
$conditions = sprintf(' `a`.`client_id` = %s AND `a`.`serial` > -1 ORDER BY `a`.`serial` ASC', $clientId);
}else{
$conditions = ' `a`.`serial` = ' . $serial;
}
/**
In your workflow you will most probably have a VARIABLE BAR that holds your request parameters which is what $conditions speaks to.
*/
$conditions = array('conditions' => $conditions);
$results = $workflow->getResults('orders', 'orders', $conditions);
}catch(catch any exceptions thrown by the API here){
//Log the exceptions here or do whatever
}
Список выше должен быть понятен. Ниже я покажу вам функции, которые я использовал из моего класса FlowgearConnect. Это не стандартный способ, поскольку вы можете настроить свой код по-разному в соответствии с вашими потребностями.
//FlowgearConnect constructor
class FlowgearConnect
{
protetced $endpoints = [];
protected $domain = "https://your-domain.flowgear.io";
public function __construct(array $endpoints)
{
$this->endpoints = $endpoints;
}
public function getResults($model, $workflow, $options= array())
{
$endpoint = $this->getEndpoint($model, $workflow);
$results = array();
if(!empty($endpoint)){
$results = FlowgearInvoke::run($authOpts, $endpoint, $options, array('timeout' => 30));
}
return $results;
}
....
}
Файл enpoints.php, как упоминалось ранее, просто возвращает массив сконфигурированных конечных точек и / или имен worflow из консоли Flowgear. Ниже приводится выдержка из того, как выглядело мое:
return array(
'orders' => array(
'shipped_orders' => '/shipped_orders',
//etc
),
'items' => array(
'your_model' => '/workflow_name_from_flowgear_console',
),
);
Это просто базовый запрос выбора с API REST Flowgear, использующий PHP. Если вам повезет, вы должны получить свои записи так, как настроили свое тело ответа для рабочего процесса.
Ниже приведено типичное тестирование рабочего процесса и того, что вы должны получить в своем API.
Я советую вам сначала создать ваши рабочие процессы на консоли Flowgear и убедиться, что требуемый вывод и извлечение нужных вам частей не изменили ваш запрос, переместите их в переменную панель для вашего запроса и вставьте их во время выполнения. время, основанное на том, что вы хотите достичь. Это объяснение можно заменить другими операциями, такими как обновление и / или удаление. Лучше всего сначала понять flowgear и убедиться, что у вас все может работать, прежде чем пытаться создать спокойное интерактивное приложение.
Предостережение. Уже более года я работаю с этой платформой, поэтому вы можете найти ошибки в ней, но я надеюсь, что это приведет вас к поиску решения вашей проблемы. Если нет, то, возможно, вы можете создать репозиторий и попросить меня проверить, как вы все настраиваете.