Пакет предоставляет удобный интерфейс для работы с API Bpm’online через протокол OData.
- Установка
- Настройка конфигураций
- Аутенфикация
- Установка коллекции
- Основные запросы
- Обработчики ответов
- Логирование
- Интеграция с Laravel
- Инструмент
Для установки необходимо выполнить команду из composer
composer require agoalofalife/bpm-online
Для установки ваших конфигурационных данных есть несколько способов :
- Через class File
//Инициализируем ядро
$kernel = new KernelBpm();
$file = new File();
// указываем путь до файла с конфигурациями
$file->setSource(__DIR__ . '/config/apiBpm.php');
// Загружаем их
$kernel->loadConfiguration($file);
Файл должен возвращать массив с конфигурационными данными
return [
// url для аутентификации
'UrlLogin' => '',
//ваш url для запросов по api
'UrlHome' => '',
'Login' => '',
'Password' => ''
]
- Через метод setConfigManually в KernelBpm
$kernel = new KernelBpm();
// первым параметром передается префикс для конфигурации
$$kernel->setConfigManually('apiBpm', [
'UrlLogin' => '',
'Login' => '',
'Password' => '',
'UrlHome' => ''
]);
Для аутенфикация в BPM API необходимо получить cookie по URL https://ikratkoe.bpmonline.com/ServiceModel/AuthService.svc/Login
Для этого необходимо вызвать метод authentication
$kernel->authentication();
Можно не вызывать его и пакет автоматически обновит куки сделав дополнительный запрос.
В BPM все таблицы из базы данных именуются как коллекции ( Collections ) Для взаимодействия необходимо установить коллекцию.
$kernel->setCollection('CaseCollection');
Данный подход имеет минус в дополнительном вызове метода setCollection
, но позволяет переиспользывать установку коллекции.
Имеется в виду что мы можем один раз установить коллекцию и производить операции по ней.
Все методы принимают первым параметром строку типа операции и тип данных, вторым параметром callback внутрь которого передается тип операции, внутри callback происходит выполнение всех пред - настроек в конце вызывается метод get. Возращается обьект типа Handler который обрабатывает ответ от BPM.
$handler = $kernel->action('read:json', function ($read){
$read->amount(1)->skip(100);
})->get();
Всего два типа данных xml
и json
.
Четыре вида операции read
, create
, update
, delete
.
Методы Select
filterConstructor Позволяет фильтровать выборку с помощью функции $filter в запросе
filterConstructor('Id eq guid\'00000000-0000-0000-0000-000000000000\'');
orderBy Получать данные в отсортированном виде Первым параметром название поля, вторым параметром тип сортировки : по возрастанию (asc) по убыванию (desc)
->orderby('Number', 'desc')
skip Если необходимо пропустить заданное кол - во записей
->skip(10)
amount Задать максимальное кол - во записей
->amount(100)
Имейте в виду что вы можете комбинировать методы согласно документации Bpm’online
Синтаксис для создания записи такой же как и Select. Внутри callback необходимо вызвать метод setData и передать ему массив параметров для создания записи в таблице BPM.
$handler = $kernel->action('create:xml', function ($creator){
$creator->setData([
// array key => value
]);
})->get();
Для обновления данных в записи в BPM необходимо знать guid записи. Здесь устанавливается guid и новые параметры для обновления.
$handler = $kernel->action('update:json', function ($creator){
$creator->guid('')->setData([
'Number' => ''
]);
})->get();
Для удаление записи из бд достаточно знать guid
$handler = $kernel->action('delete:xml', function ($creator){
$creator->guid('');
})->get();
Вне зависимости от операции всегда возращается тип Handler, который иммеет несколько методов для преобразования данных.
toArray Преобразовывает данные в массив
toJson Преобразовывает данные в json
getData Получить данные как есть
На данный момент пакет сохраняет внутри себя детализацию всех запросов с сортировкой по дате.
Их можно найти в src/resource/logs/...
Для интеграции с фреймворком Laravel необходимо скопировать конфигурации и заполнить их
php artisan vendor:publish --tag=bpm --force
Вставить сервис провайдер в файл config/app.php
\agoalofalife\bpm\ServiceProviders\BpmBaseServiceProvider::class
Далее можно пользоваться извлекая обьект из контейнера
$bpm = app('bpm');
$bpm->setCollection('CaseCollection');
$handler = $bpm->action('read:xml', function ($read){
$read->amount(1);
})->get();
Либо используя фасад , предварительно зарегистрировав его в файле config/app.php
:
'aliases' => [
Illuminate\Support\Facades\Facade\Bpm
...
]
Клиентский код
Bpm::setCollection('CaseCollection');
$handler = Bpm::action('read:xml', function ($read){
$read->amount(1);
})->get();
Вам необходимо запустить сервер выполнив команду
vendor/bin/panel-server
Когда перейдете по адресу то увидите перед собой , статистику продолжительности ваших запросов в Bpm. Это программа парсит ваш лог файл который находиться по адресу src/resource/logs
What is it ?
The package provides a convenient interface to work with API Bpm’online through the Protocol
- Install
- Configurations
- Authentication
- Set Collection
- Base Request
- Handler Response
- Log
- Integration with Laravel
- Tool
For installation, you must run the command from composer
composer require agoalofalife/bpm-online
To install your configuration data there are several ways :
- class File
//Init kernel
$kernel = new KernelBpm();
$file = new File();
// specify the path to the file with the configurations
$file->setSource(__DIR__ . '/config/apiBpm.php');
// loading...
$kernel->loadConfiguration($file);
The file must return an array with the data
return [
// url for auth
'UrlLogin' => '',
//our url for request api
'UrlHome' => '',
'Login' => '',
'Password' => ''
]
- through method setConfigManually in KernelBpm
$kernel = new KernelBpm();
// the first parameter is passed a prefix for configuration
$kernel->setConfigManually('apiBpm', [
'UrlLogin' => '',
'Login' => '',
'Password' => '',
'UrlHome' => ''
]);
For authentication in BPM API , it is necessary to get cookie in URL
https://ikratkoe.bpmonline.com/ServiceModel/AuthService.svc/Login
It is necessary to call the method authentication
$kernel->authentication();
You can not call it and the package will automatically update the cookies by making an additional query.
In BPM all tables of the database are referred to as collections ( Collections ) To communicate, you must install the collection.
$kernel->setCollection('CaseCollection');
This approach has an additional disadvantage in the method call setCollection
, but reuse installation of the collection.
Meaning that we can install a collection and perform operations on it.
All methods take the first parameter of the string type and the data type,
the second parameter callback
inside of which is passed the type of operation, inside callback
executed all pre - settings at the end method is called get
.
Returns the object type Handler which handler response from BPM.
$handler = $kernel->action('read:json', function ($read){
$read->amount(1)->skip(100);
})->get();
Only two types of data xml
and json
.
Four types of operations read
, create
, update
, delete
.
Methods Select
filterConstructor
Allows you to filter the selection using the function $filter in request
filterConstructor('Id eq guid\'00000000-0000-0000-0000-000000000000\'');
orderBy To retrieve data in sorted form The first parameter the field name, the second argument to sort : ascending (asc) descending (desc)
->orderby('Number', 'desc')
skip
If you want to skip the specified number of records
->skip(10)
amount To set the maximum number of records
->amount(100)
Keep in mind that you can combine the methods according to the documentation Bpm’online
The syntax for creating a record is the same as Select.
Inside callback
you must call setData and pass his array parameters for creating record in table BPM.
$handler = $kernel->action('create:xml', function ($creator){
$creator->setData([
// array key => value
]);
})->get();
To update the data in the record BPM you need to know guid record. This set guid and new parameters for updates.
$handler = $kernel->action('update:json', function ($creator){
$creator->guid('')->setData([
'Number' => ''
]);
})->get();
For deleting a record from DB enough to know guid and only guid
$handler = $kernel->action('delete:xml', function ($creator){
$creator->guid('');
})->get();
Regardless of the operation always returns a typeп Handler, which has several methods to convert the data.
toArray Converts the data into an array
toJson Converts the data to json
getData Just Return the data
At the moment, the package keeps a detail of all queries sorted by date.
You can find them in src/resource/logs/...
For integration with the framework Laravel you must copy the configuration and fill them
php artisan vendor:publish --tag=bpm --force
Insert the service provider to a file config/app.php
\agoalofalife\bpm\ServiceProviders\BpmBaseServiceProvider::class,
Then you can use extract the object from the container.
$bpm = app('bpm');
$bpm->setCollection('CaseCollection');
$handler = $bpm->action('read:xml', function ($read){
$read->amount(1);
})->get();
Or by using the Facade , registering it in a fileconfig/app.php
:
'aliases' => [
Illuminate\Support\Facades\Facade\Bpm
...
]
Client code
Bpm::setCollection('CaseCollection');
$handler = Bpm::action('read:xml', function ($read){
$read->amount(1);
})->get();
You need to start the server by running the command :
vendor/bin/panel-server
When you click on the address you will see a statistics of the duration of your queries in Bpm. This program parses your log file which is located at the address src/resource/logs