Beslissingen nemen门middel van甚至工作流
Beslissingen nemen门middel van甚至工作流
Het hebben van甚至国家voor vrij gebruikelijk甚至模型。van De状态甚至中wordt活化alleen bepaald门德垃圾邮件检查程序。窟als我们米尔beslissingsfactoren toevoegen吗?
我们甚至willen websitebeheerder misschien逢de reacties变迟modereren, na het checken op垃圾邮件。Het过程邹er丹als volgt外的虽然早:
- 我们beginnen见面甚至
提交
州wanneer甚至中wordt活化ingediend门甚至gebruiker; - Laat de spamchecker de om naar中analyseren en zet de活化状态
potential_spam
,火腿
的拒绝了
; - 印度不行afgewezen, wacht丹合计de websitebeheerder beslist de中去活化genoeg门德国家op
发表
的拒绝了
te zetten。
Het implementeren van deze logica不行阿尔忒复杂,低平火山口我菅直人我voorstellen dat Het toevoegen范米尔regels de complexiteit aanzienlijk菅直人vergroten。在plaats van zelf de logica te coderen kunnen我们het Symfoob娱乐下载ny Workflow-component gebruiken:
1
美元ob娱乐下载symfony作曲家申请工作流
工作流beschrijven
het De reactie-workflow菅直人配置/包/ workflow.yaml
bestand沃顿beschreven:
Om de工作流te valideren genereer我甚至visuele weergave:
1
美元ob娱乐下载symfony控制台工作流:转储|点-Tpng - o workflow.png置评
请注意
Het点
命令甚至onderdeel van deGraphviz实用程序。
即使工作流gebruiken
Vervang de huidige logica de请门德工作流程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
推荐- - - - - - MessageHandler / src / / CommentMessageHandler.php+ + + MessageHandler b / src / / CommentMessageHandler.php19 + 6 @@ 6日,28日@@使用App \ \ CommentMessage消息;使用App \ Repository \ CommentRepository;使用App \ SpamChecker;使用原则\ ORM \ EntityManagerInterface;+使用Psr \ Log \ LoggerInterface;使用Syob娱乐下载mfony \信使\ \组件处理程序\ MessageHandlerInterface;+使用Syob娱乐下载mfony \组件\ \ MessageBusInterface使者;+使用Syob娱乐下载mfony \工作流组件\ \ WorkflowInterface;类CommentMessageHandler实现MessageHandlerInterface{私人spamChecker美元;私人entityManager美元;私人commentRepository美元;美元+私人公交;+私人美元工作流;+私人美元记录器;公共函数__construct (EntityManagerInterface entityManager美元,SpamChecker SpamChecker美元,CommentRepository CommentRepository美元)+公共职能__construct (EntityManagerInterface entityManager美元,SpamChecker SpamChecker美元,CommentRepository CommentRepository美元,美元MessageBusInterface巴士,WorkflowInterface commentStateMachine美元,美元LoggerInterface记录器= null){$ this - > entityManager = $ entityManager;$ this - > spamChecker = $ spamChecker;$ this - > commentRepository = $ commentRepository;+ $ this - >总线= $总线;= $ + $ this - >工作流commentStateMachine;+ $ this - >日志记录器= $记录器;}公共职能__invoke (CommentMessage消息)美元@@ -28年12 + 37岁21 @@类CommentMessageHandler实现MessageHandlerInterface返回;}——如果(2 = = = $ this - > spamChecker - > getSpamScore(评论,美元消息- > getContext ())) {- $评论- >设置状态(“垃圾邮件”);-其他}{- $评论- >设置状态(“发表”);- - - - - -}- $ this - > entityManager - >冲洗();+如果($ this - >工作流- >(评论美元,“接受”)){+ $得分= $ this - > spamChecker - > getSpamScore(评论,美元消息- > getContext ());+ $过渡=“接受”;如果得分(2 = = = $ +){+ $过渡=“reject_spam”;+}elseif(1美元= = =分数){+ $过渡=“might_be_spam”;+}+ $ this - >工作流- >应用(评论,美元过渡);+ $ this - > entityManager - >冲洗();++ $ this - >总线- >调度($消息);+}elseif ($ this - >日志记录器){+ $ this - >日志- >调试(“删除评论消息”,(“评论”= > $评论- > getId(),“国家”= > $评论- > getState ()));+}}}
De nieuwe logica luidt als volgt:
- Als德
接受
-overgang beschikbaar voor德中在het bericht活化,controleer丹op垃圾邮件; - 黄铁矿、afhankelijk van de uitkomst de juiste overgang om脚趾te passen;
- Roep
应用()
河畔,om de中bij活化te通过即使aanroep op德威尔设置状态()
方法; - Roep
冲洗()
河畔om de wijzigingen de数据库中大量te leggen; - Verstuur het bericht opnieuw om opnieuw脚趾te passen de工作流。
Aangezien我们de adminvalidatie不行hebben geimplementeerd zal de volgende科尔dat het bericht wordt verwerkt,沃顿gelogd“删除评论消息”。
变迟我们甚至automatische validatie implementeren河畔合计het volgende hoofdstuk:
1 2 3 4 5 6 7 8 9 10 11 12
推荐- - - - - - MessageHandler / src / / CommentMessageHandler.php+ + + MessageHandler b / src / / CommentMessageHandler.php@@ -50 50 6 + 9 @@类CommentMessageHandler实现MessageHandlerInterface $ this - > entityManager - >冲洗();$ this - >总线- >调度($消息);+}elseif ($ this - >工作流- >(评论,美元“发布”)| | $ this - >工作流- >(评论美元,publish_ham)) {+ $ this - >工作流- >应用(评论,美元$ this - >工作流- >(评论美元,“出版”)?“发布”:“publish_ham”);+ $ this - > entityManager - >冲洗();}elseif ($ this - >日志记录器){$ this - >日志- >调试(“删除评论消息”,(“评论”= > $评论- > getId(),“国家”= > $评论- > getState ()));}
Draaiob娱乐下载symfony服务器:日志
en voeg甚至中脚趾在活化de前端om阿莱overgangen 8 elkaar te虽然gebeuren。
服务zoeken de依赖注入容器
Bij het gebruik van依赖注入krijgen我们服务van de依赖注入容器门索姆甚至混凝土implementatie-class-naam te typen甚至接口。低平火山口als甚至接口meerdere implementaties heeft,菅直人Symfony不行radeob娱乐下载n维尔克jij nodig hebt。我们hebben甚至许多nodig om expliciet te zijn。
我们zijn zojuist佐薇’voorbeeld tegengekomen遇到de injectie van甚至“WorkflowInterface”de vorige paragraaf。
锄头菅直人Symob娱乐下载fony raden维尔克工作流implementatie酩悦沃顿gebruikt aangezien我们甚至exemplaar van de generiekeWorkflowInterface
接口在构造函数de injecteren吗?ob娱乐下载Symfony gebruikt甚至conventie gebaseerd op de argumentnaam:commentStateMachine美元
verwijst naar德评论
工作流在de configuratie(死van het类型state_machine
)。Wanneer我甚至安德利果汁argumentnaam probeert zal说mislukken。
Als我德conventie不行米尔知道,gebruik丹het突击队调试:容器
。Zoek naar阿莱服务满足“工作流”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
美元ob娱乐下载symfony控制台调试:工作流容器选择以下服务来显示其信息之一:[0]console.command.workflow_dump[1]工作流。摘要[2]workflow.marking_store。方法[3]工作流。注册表[4]workflow.security。expression_language[5]工作流。twig_extension [6] monolog.logger。工作流[7]Symfonyob娱乐下载 \工作流组件\ \注册[8]Symfony \组件\ \ WorkflowInterface工作流美元commentStateMachine[9]Psr \ \ LoggerInterface日志美元workflowLogger>
让op keuze8
,ob娱乐下载Symfony \工作流组件\ \ WorkflowInterface commentStateMachine美元
死我vertelt dat het gebruik范commentStateMachine美元
als argumentnaam甚至speciale betekenis heeft。
请注意
我们哈登het突击队调试:自动装配
kunnen gebruiken, zoals我们甚至vorig hoofdstuk hebben gezien:
1
美元ob娱乐下载symfony控制台调试:自动装配工作流程