當前位置:歷史故事大全網 - 歷史上的今天 - 卡蒙達-dmn

卡蒙達-dmn

?DMN(決策模型和符號(DMN))是壹個商業決策管理標準。

?目前,camunda的DMN引擎支持DMN1.3標準,包括決策表、決策文字表達式、決策需求圖和feel(足夠友好的表達式語言)。

決策表:將決策邏輯指定為壹個表。

決策文字表達式:將決策邏輯指定為壹個表達式。

決策需求圖:相互依賴的決策建模。

Feel(足夠友好的表達語言):DMN默認的表達語言。

?決策表表示壹個決策邏輯,可以用DMN1.3中的表來描述。它包含輸入、輸出和規則。

?決策表在xml中由決策元素中的決策表元素表示:

?決策名描述了這個決策表提供的決策邏輯。它被設置為decision元素上的name屬性。

?決策表名稱描述了該決策表提供的決策邏輯。它被設置為decision元素上的name屬性。

?決策Id是壹種技術標識。它設置在決策元素的id屬性上。當在camunda BPM平臺上部署決策時,每個決策都必須有壹個唯壹的id。引擎使用id作為部署決策定義的決策關鍵字。

?決策表有壹個或多個輸入,也稱為輸入子句。Input子句定義了數字(id)、標簽(label)、表達式(expression)和決策表輸入類型(type)。

?可以通過雙擊決策表中每壹列的列標題來編輯輸入。

?xml中的輸入子句由決策表中的輸入元素表示:

輸入編號是決策表輸入的唯壹標識。

輸入標簽是輸入的簡短描述。

輸入表達式指定如何生成輸入子句的值。這是壹個將被DMN引擎解析的表達式。它通常很簡單,引用壹個在運行時可見的變量引用。

當DMN引擎解析輸入表達式時,結果將被轉換為指定的類型,支持的類型可以在用戶指南中找到。註意:類型不是必需的,但建議設置它,因為它可以幫助我們理解可能的輸入值,並提供類型安全的驗證。

表達式語言可以指定輸入表達式的語言。如果未指定,將使用定義元素中的全局表達式語言。如果沒有設置全局表達式語言,則默認使用JUEL表達式語言。

當解析輸入表達式並返回解析後的值時,該值將存儲在壹個變量中,該變量的名稱是輸入變量的名稱。這個變量名也可以使用表達式。

?決策表可以有壹個或多個輸出,也稱為輸出子句。output子句定義了決策表的編號(id)、標簽(label)、名稱(name)和輸出類型。

?xml中的輸入子句由決策表中的輸出元素表示。

Output number是決策表輸出的唯壹編號,由camunda平臺用來關聯已執行決策的歷史輸出。

輸出標簽時對輸出的簡短描述。輸出標簽不是必須的,但是推薦設置,因為它可以幫助我們理解決策。

輸出名是指決策表執行結果的輸出值。如果決策表有多個輸出,所有輸出都必須有唯壹的名稱。

當輸出條目被DMN引擎執行時,執行結果被轉換成這個指定的類型。有關支持的類型,請參見用戶指南。類型不是必需的,但建議設置,因為它可以提供類型安全的輸出值。

此外,該類型還可以用於將輸出值轉換為另壹種類型,例如將80%的字符串類型轉換為浮點數。有關詳細信息,請參見用戶定義的數據類型。

?壹個決策表可以有多個規則。每個規則包含多個輸入和輸出條目。輸入項是條件,輸出項是規則的結果。如果每個輸入項都被滿足,那麽這個規則被滿足,並且決策結果包括這個規則的輸出結果。

?在xml中,規則由decisionTable元素中的rule元素表示:

壹個規則可以有壹個或多個輸入項,這個輸入項是這個規則的條件。每個條目在文本元素中都包含壹個表達式,如果這個條目被滿足,那麽這個表達式將被解析為true。

如果壹個輸入項與這個規則無關,並且表達式為空,那麽表達式總是滿足的,也就是說,它被解析為true。

如果使用FEEL表達式語言,那麽空的輸入項用-表示,其他表達式為空。

expressionLanguage可以用expressionlanguage屬性指定。有關支持的表達式語言,請參見用戶指南。如果沒有設置表達式語言,將使用定義中設置的全局表達式語言。如果未設置全局表達式語言,將使用默認的感覺表達式語言。

壹個規則可以有多個輸出條目,這個條目是規則的結果。每個輸出條目在文本元素中都包含壹個表達式。

如果輸出條目為空,則輸出將被忽略,並且不是決策表結果的壹部分。

請參見輸入項表達式。

請參見輸出條目的描述。

?決策表的命中策略指定了決策表的哪些結果。

?hitPolicy在decisionTable元素的hitpolicy屬性中設置。如果未設置,則默認為唯壹命中策略。

命中策略指定可以滿足決策表的多少規則,以及哪些滿足的規則將包括在決策表結果中。獨特的,任何和第壹次擊中策略總是返回壹個最滿意的規則。規則順序和收集命中策略將返回多個滿足的規則。

只能滿足壹個規則或不滿足任何規則。決策表的結果包含滿足規則的輸出項目。

如果滿足多個規則,則違反唯壹命中策略。

可以滿足多個規則,然後所有滿足的規則必須有相同的輸出。這個決策表的結果將只包含壹個符合規則的輸出。

如果滿足多個規則,並且生成不同的輸出,這就違反了hit策略。

這是請假的決策表。如果妳申請這個假期,或者申請人處於試用期,申請將被拒絕。否則,申請被批準。

可以滿足多個規則。決策表結果只包含滿足規則的第壹個輸出。

見上面的廣告決策表。關於根據用戶當前年齡決定顯示哪個廣告。例如,用戶當前年齡為19歲。所有結果都匹配,但是因為這個點擊策略是第壹個點擊策略,所以將顯示汽車廣告。

可以滿足多個規則。決策表包含所有符合規則的輸出,並根據決策表中規則的順序進行排序。

看上面關於廣告的決策,假設我們有壹個年齡為19的用戶。所有的規則都得到滿足,所以所有的輸出都將按照規則的順序給出給決策表結果。它可以用於指示所顯示廣告的優先級。

滿足多個結果。決策表包含以任意順序滿足條件的所有輸出結果。

這個命中策略,輸出列表是亂序的。所以如果年齡是19,廣告可以任意。

此外,設置命中策略可以指定聚合器。如果指定了聚合器,決策表的結果將只包含壹個輸出條目。聚合器將從所有符合規則的輸入條目中生成這個輸出條目。註意,集合命中策略使用了壹個聚合器,決策表只能有壹個輸出。

求和聚集器將所有滿足的規則的輸出相加。

這個決策表可以用來合計壹個員工的獎金,比如這個員工在公司工作了3.5年。所以第壹、第二、第三條規則都會滿足,這個決策表的結果是600,所有輸出的總和。

最小值聚合器可用於返回滿足規則的所有最小輸出值。看下圖車險的例子。壹輛車多年沒出過事故,保險費用應該降低。

例如,如果輸入值是3.5年,結果應該是98.83。雖然第壹、第二和第三個規則都匹配,但第三個規則的輸出值最小。

最大值聚合器可用於返回滿足規則的所有最大輸出值。

這個決定表代表了關於孩子零花錢數量的決定。根據孩子的年齡,零花錢的數量會增加。比如妳輸入壹個9,第壹個和第二個規則會匹配,第二個規則的輸出大於第壹個規則的輸出,那麽這個決策的輸出就是5。壹個9歲的孩子會得到5元的零花錢。

計數聚合器返回滿足的條件數。

比如上面的獎金決策表,如果使用計數聚合器,輸入值為4,滿足第壹、二、三條規則,那麽這個決策表的結果是3,也就是說4年後決策表的結果是3工資獎金。

決策文字表達式表明決策邏輯可以描述為DMN1.3的表達式。它由壹個文字表達式和壹個變量組成。

在xml中,決策文本表達式可以由decision元素中的literalExpression元素表示:

該名稱描述了由該文字表達式提供的決策邏輯。它是在決策元素的name屬性中設置的:

這個數字是決策的技術數字,在決策元素的id屬性中設置。

當部署到camunda BPM平臺時,每個決策都應該有壹個單獨的編號。在部署決策定義時,引擎將此編號用作決策的關鍵字。

這個文字表達式指定了決策值是如何生成的。這是壹個將由DMN引擎執行的表達式。它可以用作復雜的計算來調用提供決策邏輯的bean,或者組合輸出需求決策的值。

該表達式是在xml的literalExpression元素的text元素中設置的。

可以通過literalExpression的expressionLanguage屬性指定其expressionlanguage。有關支持的表達式語言,請參見用戶指南。

如果未設置表達式語言,將使用在definitions元素上設置的全局表達式語言。

如果沒有設置全局表達式語言,將使用默認的表達式語言JUEL。有關詳細信息,請參見用戶指南。

文字表達式必須由壹個變量組成,name屬性和type屬性被指定為決策的結果。變量是在decision元素的variable元素中聲明的。

變量名用於引用文字表達式的判定結果。它在xml中用name屬性指定:

在variable元素中,可以用typeRef屬性指定決策結果的類型。執行決策表達式後,結果將被轉換為指定的類型。有關支持的類型,請參見用戶指南。

請註意,該類型不是必需的,但建議使用。Should type可以提供類型安全的表達式結果。

決策需求圖(DRG)模擬決策領域,並顯示最重要的元素及其依賴性。建模的要素是決策、輸入數據和知識來源。

DRG的視覺表現被稱為決策需求圖(DRD)。

在XML中,DRG由定義元素表示。

決策需求圖可以有壹個或多個決策。決策有名字和數字。決策邏輯必須在決策表或決策表達式中。

定義元素中決策的決策元素表示:

壹個決策可以有壹個或多個它所依賴的決策。例如,上圖中對飲料的決定取決於對食物的決定。

必要的決策由informationRequirement元素中的requiredDecision元素表示。它有壹個href屬性和壹個以#開頭的值,這是必要決策的編號(依賴決策的id)。

輸入數據代表壹個或多個決策的輸入信息。

註意:輸入數據沒有執行語義,將被卡蒙達DMN引擎忽略。

它由definitions元素中的inputData元素表示:

知識來源代表了制定決策的權威。

註意:知識源沒有用於執行的語義,將被卡蒙達DMN引擎忽略。

它由definitions元素中的knowledgeSource元素表示:

DMN提供了壹種足夠友好的表達式語言,可以作為執行決策表中的表達式。

卡蒙達DMN引擎支持感覺輸入條目。在輸入項中表達的感覺項是壹個簡單的壹元測試。這些簡單的壹元測試針對表達式測試輸入值,如果滿足測試,則返回true,否則返回false。表達式可以包含本節中描述的不同元素。

比較(比較):

FEEL的簡單壹元測試支持以下比較操作。請註意,equals操作是空的,而不是=。另外,不代表操作不!=,不代表運算需要邏輯否定。

範圍:

有些感覺數據類型,如數字和日期類型,可以測試給定值是否屬於某個範圍。該範圍包括起始值和結束值。您還需要指定起始值和結束值是否包含在範圍內。

析取:

感覺簡單的壹元測試可以指定壹個聯合表達式。這個聯合表達式可以是比較,也可以是範圍。當至少有壹個表達式為真時,測試結果為真。

邏輯否定:

FEEL簡單的壹元測試可以用not函數否定。這意味著如果包含的表達式返回true,測試將返回false。註意,只允許壹個負運算符作為第壹個運算符,並且它可以包含壹個析取運算符。

合格名稱:

感覺簡單壹元表達式測試可以通過指定名稱來訪問變量和對象的屬性。

日期函數:

感覺簡單的壹元測試提供了創建時間類型值的函數。卡蒙達DMN引擎支持以下日期功能:

  • 上一篇:貴州有哪些歷史文化?
  • 下一篇:世界四大名菜是什麽?
  • copyright 2024歷史故事大全網