怎么简单实现工作流?

发布于 2022-09-02 13:12:06 字数 116 浏览 18 评论 0

最近一个项目需要实现工作流。我的想法是使用一些工作流引擎,但php平台上的工作流引擎很少,没什么成熟的案例。CTO也要我们自己实现。但现在我是眼前一抹黑,完全不知道怎么实现。能否请大家说说一个基本的工作流需要怎么实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不知所踪 2022-09-09 13:12:06

随便写的,仅供参考

<?php
class process{

    const STATE_1   = 1;
    const STATE_2   = 2;
    const STATE_3   = 3;
    const STATE_4   = 4;
    const STATE_5   = 5;
    const STATE_ALL = 99;

    private $state     = null;
    private $statesLog = [];

    public function setState($state)
    {
        if (!$this->checkRoute($state)) {
            return false;
        }
        $this->state = $state;
        return true; 
    }

    protected function routes()
    {
        return [
            static::STATE_1=>[
                'id'      =>static::STATE_1,
                'name'    =>'状态1',
                'desc'    =>'状态1的描述',
                'to'      =>[static::STATE_3, static::STATE_4],
                'actions' =>[Actions::AC1, Actions::AC3],
                'hooks'   =>[...],
            ]
            ...
        ];
    }

}

class Actions{
    const AC1 = 1;
    const AC2 = 2;
    const AC3 = 3;

    public static function actions()
    {
        return [
            static::AC1 =>[
                'id'   =>static::AC1,
                'name' =>'AC1',
                'action'=>[
                    'do'    =>['nameSpace', 'className', 'methodName'],
                    'route' =>'/tools/sms/push',
                    'attr' =>['class'=>'hight_light warning'],
                ],
            ]
            ...
        ];
    }

    public static function getAction($actionId)
    {
        $actions = static::actions();
        return $actions[$actionId] ?? null;
    } 
}
笑梦风尘 2022-09-09 13:12:06

可以看看php协程实现多任务协作,Generator,看看对你是否有帮助

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文