损坏/工作流程

通过动态工作流程控制作业任务,适用于CodeIgniter 4

v5.0.0-rc.1 2022-08-05 14:44 UTC

README

通过动态工作流程控制作业动作,适用于CodeIgniter 4

Coverage Status

快速开始

  1. 使用Composer安装: > composer require tatter/workflows
  2. 更新数据库: > php spark migrate -all
  3. 注册动作: > php spark actions:register
  4. 启动您的第一个工作流程: https://[yourdomain.com]/workflows

特性

工作流程作为CodeIgniter 4的超级控制器,允许开发者将动作作为类编写,然后将它们串联起来以控制作业流程。

安装

通过Composer轻松安装以利用CodeIgniter 4的自动加载功能,并始终保持最新状态。

> composer require tatter/workflows

或者,通过下载源文件并将目录添加到< strong>app/Config/Autoload.php中,手动安装。

下载文件并包含在自动加载中后,运行任何库迁移以确保数据库正确设置。

> php spark migrate -all

配置(可选)

可以通过扩展其配置文件来更改库的默认行为。将< strong>examples/Workflows.php复制到< strong>app/Config/中,并遵循注释中的说明。如果在< strong>app/Config/中找不到配置文件,库将使用其自身的配置。

工作流程使用Tatter\Users来处理用户记录。遵循说明以验证您有一个兼容的认证库,该库包含实现UserEntityHasPermission接口的类。

使用方法

CLI命令spark actions:list将在所有命名空间中搜索有效的动作文件并显示它们。动作文件如下标识:

  • 位于命名空间根目录中的< strong>Actions子文件夹中
  • 扩展Tatter\Workflows\BaseAction
  • 提供唯一的HANDLER_ID和描述性的ATTRIBUTES类常量

您可以编写自己的动作或从现有包中导入它们。一旦动作可用,您可以通过访问/workflows路由来从一系列动作中创建工作流程。

作业控制

Runner.php是处理作业流程的中心控制器。默认情况下,它拦截与/jobs/匹配的路由,但可以在配置文件中更改。

动作权限

您可以使用定义中的role属性限制对单个动作的访问。默认情况下,一个空的role对所有人都可用。动作将使用带有HasPermission接口的UserEntity来测试是否有权限的用户。

日志记录

作业通过两个补充数据库表和其实体跟踪其活动。

Joblogs在作业更改阶段时自动创建,并记录以下内容:

  • 作业离开的阶段(新作业为null
  • 作业进入的阶段(完成作业为null
  • 当前用户的ID(如果可用)
  • 活动的时间戳

由于作业可能多次通过阶段,因此Joblogs不是一个很好的状态指示器。Jobflags由开发者设置,代表一个确定性的作业状态。标志是一个字符串键和CodeIgniter\I18n\Time时间戳值。标志通过Job实体方法管理

  • getFlags(): array
  • getFlag($name): Time
  • setFlag($name)
  • clearFlag($name)
  • clearFlags()

例如,一个 操作 可能需要用户在接受“服务条款”协议后才能继续。其代码可能看起来像这样

public function get()
{
	if (! $this->job->getFlag('accepted'))
	{
		return $this->render('accept_form');
	}

	// Null returns indicate "Action complete"
	return null;
}

public function post()
{
	$this->job->setFlag('accepted');

	return null;
}