损坏 / 工作流程
通过动态工作流程控制作业任务,适用于CodeIgniter 4
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.4 || ^8.0
- codeigniter4/authentication-implementation: 1.0
- npm-asset/sortablejs: ^1.10
- tatter/audits: ^1.0
- tatter/frontend: ^1.0
- tatter/handlers: ^3.0
- tatter/users: ^1.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- tatter/imposter: ^1.0
- tatter/tools: ^2.0
- dev-develop
- v5.0.0-rc.1
- v5.0.0-beta.2
- v5.0.0-beta.1
- v4.1.0
- v4.0.10
- v4.0.9
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.3.0
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v2.0.1
- v2.0.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- dev-dependabot/github_actions/actions/cache-4
- dev-master
This package is auto-updated.
Last update: 2024-09-18 16:51:37 UTC
README
通过动态工作流程控制作业动作,适用于CodeIgniter 4
快速开始
- 使用Composer安装:
> composer require tatter/workflows
- 更新数据库:
> php spark migrate -all
- 注册动作:
> php spark actions:register
- 启动您的第一个工作流程: 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来处理用户记录。遵循说明以验证您有一个兼容的认证库,该库包含实现UserEntity
和HasPermission
接口的类。
使用方法
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; }