麻省理工学院einem工作流Entscheidungen treffen
麻省理工学院einem工作流Entscheidungen treffen
窗户的状态(Zustand)毛皮静脉莫德尔祖茂堂抗议,坚持durchaus ublich。Der Kommentar-Zustand将努尔vom Spam-Checker bestimmt。passiert,要是我们weitere Entscheidungsfaktoren hinzufugen吗?
Vielleicht想我们阿莱Kommentare新一轮Spam-Checker军队网站管理员* innen moderieren拉森。Der Prozess,大约所以aussehen:
- 麻省理工学院Beginne einem
提交
-Zustand,要是静脉Kommentar冯einemr Benutzer在abgegeben将; - Lasse窝Kommentar vom Spam-Checker analysieren和setze窝Zustand entweder汪汪汪
potential_spam
汪汪汪,火腿
,奥得河拒绝了
; - der Zustand要是不
拒绝了
是,warte bis静脉e网站管理员在entscheidet ob der Kommentar肠道充分地坚持和窝Zustand汪汪汪发表
奥得河拒绝了
andert。
这位逻辑学是死Implementierung不allzu schwierig,河口Du kannst Dir bestimmt介绍一下,dass das Hinzufugen weiterer Regeln死Komplexitat deutlich steigern,。Anstatt这逻辑学selbst祖茂堂programmieren,能帮我们死Symfony工作流Komponente ob娱乐下载verwenden:
1
美元ob娱乐下载symfony作曲家申请工作流
工作流definieren
在Der Datei Der Kommentar-Workflow萤石配置/包/ workflow.yaml
definiert了:
uberprufen Erzeuge一张Visualisierung嗯窝工作流:
1
美元ob娱乐下载symfony控制台工作流:转储|点-Tpng - o workflow.png置评
请注意
Der点
-Befehl是菩提树desGraphviz-Dienstprogramms。
窗户的工作流verwenden
Ersetze死aktuelle逻辑学im请军队窝工作流:
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 ()));+}}}
死neue逻辑学lautet是不是folgt:
- Uberprufe死Nachricht垃圾邮件,汪汪汪der要是
接受
-Ubergang皮毛的巢穴Kommentar der Nachricht verfugbar坚持。 - Abhangig vom Ergebnis走Du窝entsprechenden Ubergang一个;
- Fuhre
应用()
来自,嗯窝Kommentar军队杯Aufruf der设置状态()
方法祖茂堂aktualisieren; - Rufe
冲洗()
汪汪汪,死在der Anderungen Datenbank祖茂堂speichern; - Versende死Nachricht erneut,该死der nachste Ubergang im工作流stattfinden萤石。
达我们死Admin-Validierung不implementiert有,将贝姆nachsten Verarbeiten der Nachricht geloggt“删除评论消息”。
Implementieren我们bis zum nachsten Kapitel一张automatische Validierung !
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 ()));}
Fuhreob娱乐下载symfony服务器:日志
来自和fuge杯Kommentar im前端hinzu,嗯阿莱Ubergange nacheinander祖茂堂看清。
服务(Dienste)依赖注入容器法登生效
要是我们依赖注入nutzen, bekommen我们服务(Dienste) vom依赖注入容器要是我们als Type-Hint静脉接口奥得河konkreten Klasse-Namen angeben。但要是das接口mehrere Ausfuhrungen帽子,萤石Symfony不erraten、韦尔奇Du ob娱乐下载meinst。我们得其法,嗯das anzugeben。
恰巧solch一张direkte Angabe毛皮死依赖注入条板我们im vorherigen Abschnitt麻省理工学院der注入下进行WorkflowInterface
。
我们要是irgendeine Instanz des generischen WorkflowInterface接口im Contructor angeben,是不是萤石Symfony丹raten ob娱乐下载welche Workflow-Anwendung genutzt了soll后?ob娱乐下载Symfony nutzt一张Konvention basierend民主党Argument-Namen:汪汪汪
commentStateMachine美元bezieht西奇天改
评论工作流在der Konfiguration(全世界Typ
state_machine“坚持)。Probiere irgendein安德利果汁的论点和es将fehlschlagen。
杜落死Konventionen不weisst、nutze窝调试:容器
-Befehl。艾伦Suche全线服务(Diensten)死“工作流”beinhalten:
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>
杜爸爸死的选择8
吗?ob娱乐下载Symfony \工作流组件\ \ WorkflowInterface commentStateMachine美元
“Dir, dass Nutzung冯死去commentStateMachine美元
als论点一张besondere Bedeutung帽子。
请注意
我们条板欧什窝调试:自动装配
-Befehl nutzen能帮,是不是我们im vorherigen Kapitel gesehen有:
1
美元ob娱乐下载symfony控制台调试:自动装配工作流程
Weiterfuhrendes
- 工作流和Zustandsmaschinen和什么人sollte民意调查;
- 死ob娱乐下载Symfony工作流Dokumentation。