tecnocen / yii2-workflow
用于配置工作流的 Yii 2 库
Requires
- php: ^7.1
- tecnocen/yii2-rmdb: *
- tecnocen/yii2-roa: ~0.5.0
- yii2tech/ar-softdelete: *
Requires (Dev)
- codeception/base: ^2.2.11
- codeception/verify: ~1.0.0
- flow/jsonpath: ~0.3
- phpunit/php-code-coverage: 5.3.*
- yiisoft/yii2-debug: *
README
支持 ROA 的数据库动态处理工作流库。
入门
以下说明将在您的本地计算机上安装项目副本,以便进行开发和测试。有关如何将项目部署到生产系统的说明,请参阅部署部分。
先决条件
- 安装 PHP 7.1 或更高版本
- 已安装 Composer
其他要求将在下一步安装存储库时由 composer 进行检查。
安装
您可以使用 composer 通过运行以下命令安装库 tecnocen/yii2-workflow
:
composer require tecnocen/yii2-workflow
或编辑 composer.json
文件
require: { "tecnocen/yii2-workflow": "*", }
部署
然后运行所需的迁移
php yii migrate/up -p=@tecnocen/workflow/migrations
这将安装以下表结构
ROA 后端使用
ROA 支持非常简单,只需向用于存储资源的 API 容器添加一个模块版本即可。
class Api extends \tecnocen\roa\modules\ApiContainer { public $versions = [ // other versions 'w1' => ['class' => 'tecnocen\workflow\roa\modules\Version'], ]; }
然后您可以访问模块以检查可用的资源。
- workflow
- workflow/<workflow_id:\d+>/stage
- workflow/<workflow_id:\d+>/stage/<stage_id:\d+>/transition
- workflow/<workflow_id:\d+>/stage/<stage_id:\d+>/transition/<target_id:\d+>/permission
这将实现工作流的 CRUD 功能。
流程和工作日志
一个 process
是一个实体,根据工作流从一个阶段变化到另一个阶段。每个阶段的更改都会在每个 process
记录的 worklog
上进行注册。
要创建 process
,需要为 process 和 worklog 创建迁移,然后是处理它们的模型,建议使用提供的迁移模板。
class m170101_010101_credit extends EntityTable { public function getTableName() { return 'credit'; } public function columns() { return [ 'id' => $this->primaryKey(), 'workflow_id' => $this->normalKey(), // other columns ]; } public function foreignKeys() { return [ 'workflow_id' => ['table' => 'tecnocen_workflow']; ]; } }
class m170101_010102_credit_worklog extends \tecnocen\workflow\migrations\WorkLog { public function getProcessTableName() { return 'credit'; } }
运行迁移后,需要创建 Active Record 模型。
class Credit extends \tecnocen\workflow\models\Process { protected function workflowClass() { return CreditWorklog::class; } public function getWorkflowId() { return $this->workflow_id; } public function rules() { return \yii\helpers\ArrayHelper::merge(parent::rules(), [ // other rules here ]); } }
class CreditWorkLog extends \tecnocen\workflow\models\WorkLog { public static function processClass() { return Credit::class; } }
工作日志资源
每个 process 都会得到一个关于它经过的阶段流程的工作日志。
在 ROA 中,您可以将每个工作日志声明为 process 资源的一个子资源
public $resources = [ 'credit', 'credit/<credit_id:\d+>/worklog' => [ 'class' => WorklogResource::class, 'modelClass' => CreditWorklog::class, ] ];
运行测试
此库包含使用 composer 脚本设置测试环境的工具,有关更多信息,请参阅 Testing Environment 部分。
分解为端到端测试
一旦设置测试环境,请运行以下命令。
composer deploy-tests
运行测试。
composer run-tests
运行带有覆盖率的测试。
composer run-coverage
实时演示
您可以在新安装的项目上运行实时演示,以帮助您运行测试或了解服务器返回的响应。实时演示通过以下命令初始化。
php -S localhost:8000 -t tests/_app
其中 :8000
是端口号,可以更改。这允许您在浏览器或 REST 客户端上调用 ROA 服务。
用例
待办事项
构建于
- Yii 2:快速、安全、专业的 PHP 框架 https://yiiframework.cn
行为准则
请阅读 CODE_OF_CONDUCT.md 了解我们的行为准则。
贡献
请阅读CONTRIBUTING.md,以了解向我们提交pull请求的流程细节。
版本控制
我们使用SemVer进行版本控制。有关可用的版本,请参阅此存储库的标签。
考虑到SemVer版本控制规则的第9、10和11条讨论了预发布版本,Tecnocen-com内部将不会使用这些版本。
作者
- Angel Guevara - 初始工作 - Tecnocen.com
- Carlos Llamosas - 初始工作 - Tecnocen.com
还可以查看参与此项目的贡献者列表。
许可证
此项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件。
致谢
- 待办事项 - 感谢使用了任何代码的人
- 待办事项 - 灵感来源
- 待办事项 - 等