动态构建约束逻辑处理器
Posted
技术标签:
【中文标题】动态构建约束逻辑处理器【英文标题】:Dynamically Build Constrained Logic Processor 【发布时间】:2012-01-23 19:17:34 【问题描述】:这可能更像是一个讨论或假设性问题,但这里是……
有没有人知道任何现有的可用资源(理想情况下使用 jQuery)来构建普通 Joe 可以用来创建流程的逻辑块。基本上我在想的是,您可以将所有构建块放在一起,然后选择所需的操作和结果(如果块为真)。例如:
[IF] ACTION_A [AND] ACTION_2 [THEN] (RESULT_1)
[IF] ACTION_B [OR] ACTION_A [THEN] (RESULT_2)
大括号是以前在 php 中定义的,可以(可能)从下拉列表中选择。也许与我在此处概述的内容相符:http://www.surveygizmo.com/survey-support/tutorials/logic-builder-building-skip-jump-and-show-when-logic-rules/ 是我正在寻找的内容,尽管我真的不想重新发明***。
我还需要在 mysql 中存储所有内容,尽管 [IF] 块可能只有一项,但也可能是多项。如果我必须从头开始做这个,我不确定存储多个项目的最佳方式,然后将它们粘合在一起以形成一个条件语句。
我希望在这里获得一些灵感,如果没有的话,可以引导我到某个我不必进行任何重新发明的地方......
更新
例如,也许一个动作块是 DAY - 所以逻辑块/选择菜单如下:
[IF] DAY [EQUALS] 'wednesday' [THEN] (message = 'it is midweek!')
或许:
[IF] DAY [EQUALS] 'friday' [THEN] (message = 'the weekend is almost here!')
所有用户条目都将经过全面检查并且非常有限,因此不会发生注入......
更新 2
这是我刚刚找到的另一个示例,类似于 http://ksistem.com/jquery/sqlbuilderdemo.htm 但不是 SQL - 但与数据库无关,只是我将定义的设置操作的条件。
更新 3
Magento 有类似的东西,根据这篇文章:jQuery (or any web tool) Nested Expression Builder(尽管这是去年 8 月)
【问题讨论】:
你想在这里完成什么?允许用户从本质上将他们自己的 PHP 注入您的服务器听起来像坏新闻。 它位于管理区域内的受保护区域 - 就已经定义的操作而言,它也将非常封闭。只希望选定的用户定义后端 PHP 如何根据当前条件处理任务。如果你喜欢,它是编程,但我更多地考虑拖放块以生成代码(而不是让它们实际进行任何编码)。 另外,不允许输入任何 PHP - 只是文本 - 任何 PHP 代码或 MySQL 或 html 都将无效(因为检查将到位)。 【参考方案1】:这在一定程度上取决于您所说的“逻辑构建器”一词的含义。如果您只想提供构建一系列 if-then-else 条件的能力,其中每个条件调用一个或多个预定义函数,那么您可以通过 XML(以及其他方法)轻松实现。
您可能有一个表格行,其中每一行看起来像这样:
Cell 1: IF
Cell 2: [dropown containing list of functions] [dropdown containing possible values]
Cell 3: THEN [dropown containing list of functions] [dropdown containing possible values]
Cell 4: ELSE [dropown containing list of functions] [dropdown containing possible values]
并提供一个按钮来复制行并指定新的 if-then-else 子句。
另一方面,如果您希望为用户提供更完整的逻辑构建器 - 例如,如果您希望允许用户也能够构建每个条件将调用的函数,而不是提供一个预定义的列表——你看到的是一个完全不同的问题。
if-then-else 子句易于以 WYSIWYG 格式指定的原因是,只有这种条件(并且没有 while 循环)的语言只能对整个可计算函数类的严格子集进行建模;即这些语言不是图灵完备的。如果您希望提供一个完全图灵完备的逻辑构建器——嗯,我认为这将是一项相当大的工作。
【讨论】:
这符合我的想法——我承认“逻辑构建器”不是描述它的最佳方式(但我想不出办法)。 XML 是解决这个问题的最佳方式(与 PHP 相比)吗?你认为我应该用什么特别的方式来写这个(我对 XML 不太熟悉,但可以找到/研究更多)。 可以在客户端构建XML,然后发送到服务器端解析执行。解析表行以构造 XML(模式可以非常简单),然后在 PHP 中读取并执行该模式。 (我并不真正使用 PHP,但我想 PHP 的动态变量在这里可以派上用场。)以上是关于动态构建约束逻辑处理器的主要内容,如果未能解决你的问题,请参考以下文章