soap / laravel-workflow-loader
这是我创建的包 laravel-workflow-loader
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
- zerodahero/laravel-workflow: ^4.0|^5.0
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/canvas: ^8.8||^9.1
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
此包通过添加将工作流配置存储在数据库中的选项扩展了zerodahero/laravel-workflow。Laravel工作流仅支持从Laravel配置中加载配置。此包允许用户更改工作流配置,而无需开发者的帮助。
支持我们
您可以提出任何改进建议,赞助此项目或发起拉取请求。我很乐意考虑任何建议。我不是一个好程序员,所以我的设计可能不是最好的。我的背景不是计算机编程。我是一名电气工程师。
安装
您可以通过composer安装此包
composer require soap/laravel-workflow-loader
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="workflow-loader-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="workflow-loader-config"
这是已发布配置文件的内容
return [ 'loaders' => [ 'database' => [ 'tableNames' => [ 'workflows' => 'workflows', 'workflow_states' => 'workflow_states', 'workflow_transitions' => 'workflow_transitions', 'workflow_state_transitions' => 'workflow_state_transitions', ], 'class' => \Soap\WorkflowLoader\DatabaseLoader::class, ], ], ];
要使用此包从数据库加载工作流配置,您需要注册包提供的工作流服务提供者。Zerodahero的工作流注册表将用于从数据库检索配置。
php artisan venodr:publish --tag="workflow-loader-provider"
这会将以下WorkflowServiceProvider.php复制到应用程序提供者文件夹,确保它包含在应用程序引导中。以下是文件的内容。
namespace App\Providers; use Illuminate\Support\ServiceProvider; class WorkflowServiceProvider extends ServiceProvider { public function register() {} public function boot() { $registry = app()->make('workflow'); $workflowLoaderRegistry = app()->make('workflowLoaderRegistry'); foreach ($workflowLoaderRegistry->all() as $workflow => $config) { $registry->addFromArray($workflow, $config); } } }
此包不提供用户界面以供用户管理工作流配置。按设计,它应在单独的包中。我有一个创建filament插件来处理这个的计划。
使用方法
完成设置后,使用您自己的方式或其他包提供的方式在数据库中创建工作流配置。然后像使用zerohadero/laravel-workflow一样使用它们。在数据库中存储配置很容易为用户开发工作流。
待办事项
目前应通过事件订阅创建守卫。我有一个计划使用Symfony表达式作为上层守卫层。例如,您可以编写;
guard => $subject.isWaitingFor($user) || !$subject.isOwnedBy($user)
或
guard => $subject.isApprovers($user) || $subject.isReviewers($user)
然后该包会为您注入$subject和$user,并使用Symfony表达式评估转换的阻止。
测试
composer test
更新日志
有关最近更改的更多信息,请参阅更新日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请审查我们的安全策略以了解如何报告安全漏洞。
鸣谢
许可协议
MIT许可(MIT)。有关更多信息,请参阅许可文件。