2013-07-31 25 views
0

用戶確認我在這以在Drools的5.4

  • 如果某些驗證失敗,我要問是否繼續用戶或不的要求。
  • 如果用戶說,我不得不persist the data in DB
  • 如果用戶說沒有然後data won't be persisted in DB
  • 驗證在validate.drl中執行。
  • 一旦執行了這些驗證,我必須問用戶他是否想繼續。處理流程如下:

    開始 - > input.drl - > validate.drl - > takeUserConfirmation.drl - > persistData.drl

在上述流程中,我必須添加一些邏輯在takeUserConfirmation.drl,這樣用戶應該確認他是否想繼續。根據給出的答案,我將在persistData.drl中限制規則。 只有在用戶確認持久性時纔會執行。我怎樣才能做到這一點?人工任務,即工作項處理程序對於這種情況是否有用?如何暫停流涎流,取用戶確認並再次啓動相同的流程?

回答

0

問題是爲什麼你想在Drools中做到這一切。規則文件似乎不適合用戶交互的地方。我寧願返回帶有驗證失敗的對象集合的應用程序代碼(可以標記它們),然後如果它們將被確認,則爲它們執行presistData.drl。

所以在最終版本,你將有兩個獨立的流動:

  • 輸入 - >驗證 - >持續(你可以在驗證對象的附加標誌,該標誌將被檢查在堅持)
  • 一直存在執行一次更多確認後

另外我想知道input.drl的用途是什麼?

這應該是比發表評論,但我沒有要求50代表。

+0

Input.drl需要初始化一些事實,例如插入必需的Service類以調用persist方法等。另外,我不能將流分成兩部分,因爲它是我的應用程序的常見流程。因此,如果validate.drl中的任何驗證失敗,takeUserConfirmation.drl將具有一些邏輯,用於詢問用戶是否要繼續,並且在用戶確認之後,流程將再次恢復。 – user2636935

+0

我最初的想法是將一些對象放入Drools全局變量並執行其返回確認結果的阻塞方法。我從來沒有使用工作項目處理程序,但它似乎是你的情況下非常好的選擇(當然,如果你可以修改一些流程)。在這兩種情況下,主要問題似乎都是調用GUI操作,但實際上會有多難,主要取決於您使用的技術。 –