2012-01-23 74 views
1

這可能將是更多的討論或假設性的問題的,但在這裏不用...動態構建約束邏輯處理器

有誰知道任何現有可用的源(即理想的使用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]塊可能只是1個項目,但它可能有幾個。如果我必須從頭開始,我不確定存儲多個項目的最佳方式,然後將它們粘合在一起以製作一個條件聲明。

我希望能在這裏得到一些啓示,如果沒有,導致地方在那裏我沒有做任何重新發明....

更新

例如,也許一個動作塊是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(儘管這是去年八月)

+5

你想在這裏完成什麼?允許用戶基本上將自己的PHP注入到服務器中聽起來就像** bad **消息。 – Josh

+0

它位於管理區域內的一個受保護區域內 - 就已經定義的操作而言,它也會非常封閉。只需要選定的用戶根據當前條件來定義後端PHP如何處理任務。如果你喜歡,它是編程,但我更多地考慮拖放塊的生成代碼(不讓他們實際上做任何編碼)。 – MrJ

+0

另一方面,不允許輸入PHP - 只是文本 - 任何PHP代碼或MySQL或HTML將是無效的(因爲檢查將會到位)。 – MrJ

回答

0

這取決於在一定程度上,你的意思是術語是什麼「邏輯建造者「。如果您只想提供構建一系列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循環)的語言只能建模整個可計算函數類的嚴格子集;即這種語言不是圖靈完整的。如果你想提供一個完全的圖靈完整的邏輯構建器 - 嗯,我認爲這將是一個相當大的事情。

+0

這是我思考的問題 - 我承認'邏輯建造者'不是描述它的最好方式(但我想不出一種方法)。 XML是最好的方式(而不是PHP)?有沒有一種特定的方式,你認爲我應該寫這個(我不熟悉XML,但可以找出/研究更多)。 – MrJ

+0

您可以在客戶端構建XML,然後將其發送到服務器端進行解析和執行。解析表格行以構建XML - 架構可以非常簡單 - 然後在PHP中讀取並執行該架構。 (我並沒有真正使用PHP,但我認爲PHP的動態變量可以在這裏派上用場。) – Shredderroy