在drools 5.4中进行用户确认
我有一个要求在drools 5.4中进行用户确认,drools,Drools,我有一个要求 如果某些验证失败,我必须询问用户是否继续 如果用户说yes,我必须将数据保存在DB中,并且 如果用户说no,则数据将不会保存在数据库中 验证在validate.drl中执行 执行这些验证后,我必须询问用户是否希望继续。工艺流程如下: Start->input.drl->validate.drl->takeUserConfirmation.drl->persistData.drl 在上面的流程中,我必须在takeUserConfirmation.drl中添加一些逻辑,以便用户确认
- 如果某些验证失败,我必须询问用户是否继续
- 如果用户说yes,我必须
中,并且将数据保存在DB
- 如果用户说no,则
数据将不会保存在数据库中李>
- 验证在validate.drl中执行
- 执行这些验证后,我必须询问用户是否希望继续。工艺流程如下: Start->input.drl->validate.drl->takeUserConfirmation.drl->persistData.drl
takeUserConfirmation.drl
中添加一些逻辑,以便用户确认是否要继续。根据给出的答案,我将限制persistData.drl
中的规则。
因此,它将仅在用户确认持久性时执行。我怎样才能做到这一点?人工任务,即工作项处理程序是否对这种情况有用?如何暂停drools流,接受用户确认并再次启动相同的流?问题是为什么要在drools中执行所有操作。规则文件似乎不是用户交互的正确位置。我更愿意回到应用程序代码中,返回验证失败的对象集合(您可以标记它们),然后如果确认它们,则为它们执行presistData.drl 因此,在最终版本中,您将有两个单独的流:
- 输入->验证->持久化(您可以在已验证的对象上设置附加标志,该标志将在持久化中选中)
- 确认后再次执行persist
这应该是评论而不是帖子,但我不需要50个代表。Input.drl需要初始化一些事实,如插入所需的服务类以调用persist方法等。此外,我不能像您建议的那样将流程分为两部分,因为这是我的应用程序的常见流程。因此,如果validate.drl中的任何验证失败,takeUserConfirmation.drl将有一些逻辑询问用户是否要继续,在用户确认后,流程将再次恢复。我最初的想法是将一些对象放入Drools全局,并执行其阻塞方法返回确认结果。我从未使用过工作项处理程序,但在您的情况下,它们似乎是非常好的选择(当然,如果您可以稍微修改一下流的话)。在这两种情况下,主要的问题似乎是调用GUI操作,但实际上有多难,主要取决于您使用的技术。