jobsys/approval-module
Composer 安装命令:
composer require jobsys/approval-module
包简介
README 文档
README
该模块提供了基础的审核流程定义,审核流程实例,审核流程任务,审核流程任务实例,审核流程任务实例记录等功能。
模块安装
# 安装依赖 composer require jobsys/approval-module --dev # 启用模块 php artisan module:enable Approval && php artisan module:publish-migration Approval && php artisan migrate
配置
模块配置
"Approval" => [ "route_prefix" => "manager", // 路由前缀 "approval_types" => [ // 审核类型列表 'ProjectCreated' => [ // 审核类型名称 'displayName' => '项目创建', // 审核类型显示名称 'type' => 'project-created', // 审核类型标识 'approve_todo' => \App\Notifications\ProjectApproveTodo::class, // 审核待办通知类 'approved_event' => \App\Events\ProjectApproved::class, // 审核结果事件通知类 ], ] ]
模块功能
审核功能
在模块配置中先添加项目中的审核类型,然后在管理后台进行审核的流程定义。可以为流程设置多个审核流程及节点的可见性,具体见设置页面。后续可以在业务中创建 审核任务,以及进行任务的审核。
开发规范
-
在
config/module.php的Approval=>approval_types添加审核类型。 -
给被审核的
Model添加Modules\Approval\Traits\Approvabletrait。 -
在业务逻辑中创建审核任务,如下:
$project = Project::find(1); $approvalService->createApprovalTask($project, config('approval.approval_types.ProjectCreated'));
更推荐使用
Event/Listener的方式创建审核任务,对于原业务流程侵入性更低,且可以在Listener中处理多种事件,其流程如下:-
在
app/Events目录下创建ProjectCreated.php事件类 -
在
app/Listeners目录下创建ProjectCreatedListener.php监听类并创建审核任务 -
在
app/Providers/EventServiceProvider.php中注册事件和监听类 -
在业务逻辑中触发事件,如下:
$project = Project::find(1); ProjectCreated::dispatch($project);
-
-
使用
Modules\Approval\Services\ApprovalService中的getUserApprovable获取用户的审核任务,如下:$query = Project::with(['department:id,name'])->when($name, function ($query) use ($name) { return $query->where('name', 'like', '%' . $name . '%'); }) $pagination = $service->getUserApprovable($query, auth()->user(), $process, $approval_status)->paginate();
$query 参数是一个 Approvable Model 的查询对象,可以使用 with, where 等方法进行查询,进行业务处理后返回。
-
在前端引入
Modules\Approval\Resources\views\web\components\ApprovalBox.vue,其中已经封装了审核功能,该组件接收三个参数:defineProps({ tasks: { type: Array, default: () => [] }, // 审核流程的中该审核对象的任务列表 histories: { type: Array, default: () => [] }, // 审核对象的审核历史记录 currentTask: { type: Object, default: () => null }, // 当前审核任务 })
以上三个参数在上一步的
getUserApprovable都已经封装到了审核对象中,可以直接使用。
模块代码
数据表
2014_10_12_000002_create_approval_tables.php # 审核模块数据表
数据模型/Scope
Modules\Approval\Entities\ApprovalProcess # 审核流程 Modules\Approval\Entities\ApprovalProcessNode # 审核流程节点 Modules\Approval\Entities\ApprovalTask # 审核任务 Modules\Approval\Entities\ApprovalTaskHistory # 审核任务历史记录
枚举
// 审核状态 enum ApprovalStatus: string { case Pending = 'pending'; //待审核 case Approved = 'approved'; //审核通过 case Rejected = 'rejected'; //审核驳回 case Skipped = 'skipped'; //审核跳过 case Updated = 'updated'; //审核对象已更新 } //后续节点对于审核对象的可见性 enum ApprovalSubsequentAction: string { case Invisible = 'invisible'; //不可见 case Visible = 'visible'; //可见 case Approve = 'approve'; //可审核 }
辅助函数
基础
-
approval_status_options/** * 获取前端可用的审核状态选项 * @return array[] */ function approval_status_options(): array
Controller
Modules\Approval\Http\Controllers\ApprovalController # 审核流程的增删改查以及审核操作的 API
UI
PC 端页面
web/PageApprovalProcess.vue # 审核流程定义管理页面
PC 组件
web/components/ApprovalBox.vue # 审核组件,整合了审核操作,审核历史,审核流程等功能
Service
-
ApprovalService-
createApprovalTask创建审核任务/** * 创建审核任务 * @param Model $approvable * @param array $config * @return array */ public function createApprovalTask(Model $approvable, array $config): array
-
getUserApprovable获取用户的审核任务/** * 获取用户待审核的审核对象 * @param Builder $builder * @param User $user * @param ApprovalProcess $process * @param string $status * @return Builder */ public function getUserApprovable(Builder $builder, User $user, ApprovalProcess $process, string $status = ''): Builder
-
approve审核/** * 审核 * @param User $user * @param Model $approvable * @param ApprovalProcess $process * @param string $approval_status * @param string $approval_comment * @param bool $is_snapshot * @return array */ public function approve(User $user, Model $approvable, ApprovalProcess $process, string $approval_status, string $approval_comment = '', bool $is_snapshot = false): array
-
getUserApprovableTask获取当前用户对于某个审核对象的审核任务/** * 获取当前用户对于某个审核对象的审核任务 * @param User $user * @param ApprovalProcess $process * @param Model $approvable * @return ApprovalTask|null */ public function getUserApprovableTask(User $user, ApprovalProcess $process, Model $approvable): ApprovalTask|null
-
getApprovalDetail为审核对象添加审核历史和详情/** * 为审核对象添加审核历史和详情 * @param ApprovalProcess $process * @param Model $approvable * @return void */ public function getApprovalDetail(ApprovalProcess $process, Model $approvable): void
-
jobsys/approval-module 适用场景与选型建议
jobsys/approval-module 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 61 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 06 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 jobsys/approval-module 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jobsys/approval-module 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 61
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-06-21