search

Home  >  Q&A  >  body text

php - 怎么简单实现工作流?

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

大家讲道理大家讲道理2902 days ago576

reply all(2)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 17:15:48

    随便写的,仅供参考

    <?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;
        } 
    }
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 17:15:48

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

    reply
    0
  • Cancelreply