agoalofalife / bpm-online
使用 BPM Terrasoft API
Requires
- php: >=5.6.4
- beberlei/assert: ^2.5
- guzzlehttp/guzzle: ~6.0
- illuminate/config: ~5.4
- illuminate/container: ~5.4
- illuminate/support: ~5.4
- monolog/monolog: 1.*
- slim/slim: ^3.0
- symfony/var-dumper: ^3.2
Requires (Dev)
- fzaninotto/faker: ^1.6
- mockery/mockery: ^0.9.9
- php-mock/php-mock-mockery: *
- phpunit/phpunit: 5.7.*
This package is auto-updated.
Last update: 2024-09-29 05:01:15 UTC
README
API BPM ONLINE
该包提供了一个方便的接口,通过 OData 协议与 API Bpm’online 交互。
安装
安装需要执行 composer 命令
composer require agoalofalife/bpm-online
配置设置
安装配置数据有多种方法
- 通过 class 文件
//Инициализируем ядро
$kernel = new KernelBpm();
$file = new File();
// указываем путь до файла с конфигурациями
$file->setSource(__DIR__ . '/config/apiBpm.php');
// Загружаем их
$kernel->loadConfiguration($file);
文件应返回一个包含配置数据的数组
return [
// url для аутентификации
'UrlLogin' => '',
//ваш url для запросов по api
'UrlHome' => '',
'Login' => '',
'Password' => ''
]
- 通过 KernelBpm 中的 setConfigManually 方法
$kernel = new KernelBpm();
// первым параметром передается префикс для конфигурации
$$kernel->setConfigManually('apiBpm', [
'UrlLogin' => '',
'Login' => '',
'Password' => '',
'UrlHome' => ''
]);
认证
为了在 BPM API 中进行认证,需要从 URL https://ikratkoe.bpmonline.com/ServiceModel/AuthService.svc/Login
获取 cookie。为此,需要调用 authentication
方法
$kernel->authentication();
可以不调用它,并且包会自动更新 cookie,执行额外的请求。
安装集合
在 BPM 中,所有数据库表都命名为集合(Collections)。为了交互,需要设置集合。
$kernel->setCollection('CaseCollection');
这种方法有一个缺点是额外调用 setCollection
方法,但允许重用集合设置。意思是我们可以一次设置集合,然后对它进行操作。
Select
所有方法都接受第一个参数为操作类型的字符串和数据类型,第二个参数为 callback,其中传递操作类型,在 callback 中执行所有预设置,最后调用 get 方法。返回一个处理 BPM 响应的对象类型 Handler。
$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 文档组合这些方法
Create
创建记录的语法与 Select 相同。在 callback 中,需要调用 setData 方法并传递一个包含 BPM 表格中创建记录所需参数的数组。
$handler = $kernel->action('create:xml', function ($creator){
$creator->setData([
// array key => value
]);
})->get();
Update
为了在 BPM 中更新记录数据,需要知道记录的 guid。这里设置 guid 和更新参数。
$handler = $kernel->action('update:json', function ($creator){
$creator->guid('')->setData([
'Number' => ''
]);
})->get();
Delete
要从数据库中删除记录,只需要知道 guid
$handler = $kernel->action('delete:xml', function ($creator){
$creator->guid('');
})->get();
响应处理器
无论操作类型如何,都会返回一个类型为 Handler 的对象,该对象有几个用于转换数据的方法。
toArray 将数据转换为数组
toJson 将数据转换为 json
getData 获取原始数据
日志记录
目前,该包在内部保存所有请求的详细记录,按日期排序。它们可以在 src/resource/logs/...
中找到
与 Laravel 集成
为了与 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 的日志文件
这是什么?
此软件包提供了一个方便的接口,通过协议使用 HTTP 请求与 Bpm’online API 进行交互
安装
为了安装,您必须从 composer 运行命令
composer require agoalofalife/bpm-online
配置
要安装您的配置数据,有多种方法
- 类文件
//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);
文件必须返回一个包含数据的数组
return [
// url for auth
'UrlLogin' => '',
//our url for request api
'UrlHome' => '',
'Login' => '',
'Password' => ''
]
- 通过 KernelBpm 中的 setConfigManually 方法
$kernel = new KernelBpm();
// the first parameter is passed a prefix for configuration
$kernel->setConfigManually('apiBpm', [
'UrlLogin' => '',
'Login' => '',
'Password' => '',
'UrlHome' => ''
]);
身份验证
对于 BPM API 的身份验证,需要从 URL 获取 cookie
https://ikratkoe.bpmonline.com/ServiceModel/AuthService.svc/Login
需要调用 authentication
方法
$kernel->authentication();
您不能调用它,软件包将通过额外的查询自动更新 cookie。
设置集合
在 BPM 中,所有数据库表都被称为集合(Collections)。为了通信,您必须安装集合。
$kernel->setCollection('CaseCollection');
此方法在调用 setCollection
方法时具有额外的缺点,但可以重复安装集合。这意味着我们可以安装一个集合并对它执行操作。
Select
所有方法都接受一个字符串类型的第一个参数和数据类型,第二个参数是 callback
,其中传递了操作类型,在 callback
中执行所有预设置,方法结束时调用 get
。
返回处理来自 BPM 的响应的对象类型 Handler。
$handler = $kernel->action('read:json', function ($read){
$read->amount(1)->skip(100);
})->get();
仅支持两种数据类型 xml
和 json
。四种操作类型 read
、create
、update
、delete
。
选择方法
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 文档组合这些方法
Create
创建记录的语法与 Select 相同。在 callback
中,您必须调用 setData 并传递创建 BPM 表中的记录所需的数组参数。
$handler = $kernel->action('create:xml', function ($creator){
$creator->setData([
// array key => value
]);
})->get();
Update
要更新 BPM 中的数据记录,您需要知道记录的 guid。设置 guid 和更新参数。
$handler = $kernel->action('update:json', function ($creator){
$creator->guid('')->setData([
'Number' => ''
]);
})->get();
Delete
要从数据库中删除记录,只需知道 guid 即可,只需要 guid。
$handler = $kernel->action('delete:xml', function ($creator){
$creator->guid('');
})->get();
处理响应
无论操作如何,始终返回一个类型为 Handler 的对象,该对象具有几种转换数据的方法。
toArray 将数据转换为数组
toJson 将数据转换为 json
getData 仅返回数据
日志
目前,软件包按日期排序保存所有查询的详细信息。您可以在 src/resource/logs/...
中找到它们
Laravel 集成
为了与框架 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 的日志文件