Kogito人机规则-第1部分:进一步解决流口水
Kogito計劃是我們承諾將我們的業(yè)務(wù)自動化套件引入云和更大的Kubernetes生態(tài)系統(tǒng)的承諾。 但這對我們鐘愛的規(guī)則引擎Drools意味著什么? 在這篇文章中,我們介紹使用規(guī)則單元的模塊化規(guī)則庫: 一個特點,一直是在Drools中7一段時間的實驗 ,但是這將是其Kogito,它會發(fā)揮更大的作用。 這是系列文章的第一篇,我們將向您概述此功能。
讓流口水更進一步
Drools是我們最新的,高性能,功能豐富的開源規(guī)則引擎 。 人們喜歡它,因為它是瑞士軍刀 ,可以解決基于規(guī)則的人工智能可以解決的許多問題。 但是隨著計算機編程領(lǐng)域的發(fā)展,我們還需要考慮各種方法來帶來更多Drools。 您可能已經(jīng)知道, Kogito是我們努力使Drools和jBPM真正成為云原生,并且非常適合無服務(wù)器部署:我們采用Quarkus框架和GraalVM的本機二進制編譯,以實現(xiàn)超快速的啟動時間和低內(nèi)存。腳印; 但是我們不止于此。
我們希望帶給Drools進一步發(fā)展的方式是雙重的 :一方面,我們希望通過提供更好的方法來定義規(guī)則庫中具有更好模塊概念的邊界,從而使我們的編程模型更易于推理 。 另一方面,模塊化編程的概念至少可以追溯到1970年代和Parnas最初的開創(chuàng)性論文 。 不用說,如果我們的貢獻到此為止,我們將不會帶來任何新的變化。 在過去的幾年中,計算技術(shù)已經(jīng)發(fā)展,緩慢但穩(wěn)定地迎來了多核和分布式革命 。 然而,到目前為止,許多通用編程語言并沒有真正使編寫并行或分布式程序變得簡單。 規(guī)則為基礎(chǔ)的編程系統(tǒng),我們必須提出一些不同的機會:一個規(guī)則引擎,是偉大的 單機時,但優(yōu)秀的在云中。
模塊化規(guī)則庫。 如您所知,Drools提供了一種將規(guī)則集劃分為知識庫的便捷方法。 這樣的知識庫可以組合在一起,產(chǎn)生更大的規(guī)則集。 當(dāng)實例化一個知識庫(所謂的會話 )時,規(guī)則被放到同一執(zhí)行環(huán)境( 生產(chǎn)內(nèi)存 )中,而值( 事實 )都被插入到同一工作內(nèi)存中 。
這個模型非常簡單和強大,但是從某種意義上說它也非常有限 。 這非常簡單,因為作為規(guī)則庫的用戶,您只需要擔(dān)心數(shù)據(jù):將值插入到工作內(nèi)存中,引擎就發(fā)揮了不可思議的作用。 它非常強大,因為作為規(guī)則作者,您可以依靠編寫的規(guī)則來實現(xiàn)復(fù)雜的推理流程,而不必擔(dān)心它們將如何觸發(fā)以及何時觸發(fā)。
同時,這種執(zhí)行模型缺少所有原則,這些年來,我們一直在學(xué)習(xí)的是良好的編程實踐。 例如,沒有適當(dāng)?shù)哪K概念:不可能將一個規(guī)則與另一個規(guī)則完全隔離,也無法正確劃分工作內(nèi)存。 隨著規(guī)則庫復(fù)雜性的增加,可能很難理解觸發(fā)哪些規(guī)則以及為什么觸發(fā)。 從某種意義上說,就好像您在一個不存在適當(dāng)?shù)臓顟B(tài)封裝的奇怪世界中進行編程一樣,好像沒有發(fā)生多年的編程語言演進一樣。
面向?qū)ο蟮木幊獭?多年來,面向?qū)ο蟪绦蛟O(shè)計一詞已被重載,以表示許多不同的事物。 它必須與繼承 , 狀態(tài)封裝 , 代碼重用和多態(tài)性有關(guān) 。 所有這些術(shù)語經(jīng)常引起混淆,但它們并不是真正相關(guān)的:您可以重用代碼而無需繼承,可以封裝狀態(tài)而無需對象,可以編寫多態(tài)代碼而無需類。 最近,諸如Go和Rust之類的命令式編程語言沒有附帶適當(dāng)?shù)念?#xff0c;但是它們支持一種面向?qū)ο蟮男问健?C ++的父親Bjarne Stroustrup甚至在2015年發(fā)表了精彩的演講,展示了他的孩子如何在不繼承的情況下支持面向?qū)ο?。
艾倫·凱(Alan Kay)是他在施樂(Xerox)的Smalltalk生涯中的父親, 他在OOPSLA 1997的鼓舞人心的演講中說:“我組成了“面向?qū)ο蟆?#xff0c;我可以告訴你我沒有C ++ 。 實際上,艾倫·凱(Alan Kay)率先提出的對象概念更類似于參與者和微服務(wù)的概念。 在正確的面向?qū)ο蟪绦蛟O(shè)計中,對象通過與外部世界交換消息 (通常稱為方法)來封裝其內(nèi)部狀態(tài)并公開其行為。
如今,參與者系統(tǒng)已經(jīng)復(fù)興,消息總線對于今天我們稱為反應(yīng)式編程的中心非常重要,微服務(wù)幾乎是理所當(dāng)然的。 因此,我們想知道,Drools成為這種新編程環(huán)境的一流公民意味著什么?
Kogito,ergo Cloud
在下一篇文章中,我們將看到我們使用規(guī)則單元進行基于規(guī)則的模塊化編程。 規(guī)則單元將為普通知識庫構(gòu)成和執(zhí)行的擴展模型提供替代方案。 我們相信,規(guī)則單元將為更廣泛的用例(包括并行和分布式體系結(jié)構(gòu))留出空間。 請繼續(xù)關(guān)注它們?nèi)绾芜m應(yīng)Kogito的故事,以及它們可能為我們的自動化平臺的未來帶來的令人興奮的可能性。
翻譯自: https://www.javacodegeeks.com/2019/08/kogito-ergo-rules-part-1-bringing-drools-further.html
總結(jié)
以上是生活随笔為你收集整理的Kogito人机规则-第1部分:进一步解决流口水的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 世界十大沙漠简介(世界著名沙漠遍及世界七
- 下一篇: jenkins jboss_与JBoss