tecnocen/yii2-workflow

用于配置工作流的 Yii 2 库

安装次数: 6,175

依赖关系: 0

建议者: 0

安全: 0

星级: 13

关注者: 9

分支: 3

开放问题: 0

类型:yii2-extension

0.4.0 2019-07-14 17:48 UTC

This package is auto-updated.

Last update: 2024-08-29 04:27:44 UTC


README

支持 ROA 的数据库动态处理工作流库。

Latest Stable Version Total Downloads

Travis Build Status Travis

入门

以下说明将在您的本地计算机上安装项目副本,以便进行开发和测试。有关如何将项目部署到生产系统的说明,请参阅部署部分。

先决条件

其他要求将在下一步安装存储库时由 composer 进行检查。

安装

您可以使用 composer 通过运行以下命令安装库 tecnocen/yii2-workflow

composer require tecnocen/yii2-workflow

或编辑 composer.json 文件

require: {
    "tecnocen/yii2-workflow": "*",
}

部署

然后运行所需的迁移

php yii migrate/up -p=@tecnocen/workflow/migrations

这将安装以下表结构

Database Diagram

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 服务。

用例

待办事项

构建于

行为准则

请阅读 CODE_OF_CONDUCT.md 了解我们的行为准则。

贡献

请阅读CONTRIBUTING.md,以了解向我们提交pull请求的流程细节。

版本控制

我们使用SemVer进行版本控制。有关可用的版本,请参阅此存储库的标签

考虑到SemVer版本控制规则的第9、10和11条讨论了预发布版本,Tecnocen-com内部将不会使用这些版本。

作者

还可以查看参与此项目的贡献者列表

许可证

此项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件。

致谢

  • 待办事项 - 感谢使用了任何代码的人
  • 待办事项 - 灵感来源
  • 待办事项 - 等

yii2-workflow