Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanAta Özhan Değiştirilmiş 8 yıl önce
1
Kural Motorları Bora Güngören Portakal Teknoloji bora@portakalteknoloji.com AB 2007 01.02.2007
2
2 www.portakalteknoloji.com19/09/2016 Kural Motorları Tasarı m TestYazılımAnaliz Ürün Geleneksel (doğrusal) yazılım geliştirme süreci varsayımı:
3
3 www.portakalteknoloji.com19/09/2016 Kural Motorları Problem Tanımı : ● İş kuralları sürekli değişir: –Teslim edilmesi planlanan ürün güncelliğini yitirir. –Teslimat süresi uzar. –Yeteri kadar test edilemez. –Ürün kalitesiz olur. Çözüm Önerisi : ● Kural motorları
4
4 www.portakalteknoloji.com19/09/2016 Kural Motorları ● Kural motorlarının kullanımı ne zaman yararlı? –İş akışları kod seviyesinde yönetilemeyecek kadar karışıksa –İş yapış şekli sürekli değişiyorsa –Değişikliklerin hemen uygulamaya konması gerekiyorsa
5
5 www.portakalteknoloji.com19/09/2016 Kural Motorları ● Kural motoru kullanılması sonucunda –İş yapış şekli tanımları kolayca anlaşılır –İş yapış şekli programlama dillerinden bağımsız olur –İş yapış şekli bilgisini kodlama mantığından ayırır –Kaynak kod değiştirilmeden değiştirilebilir –İş yapış şeklindeki değişiklikler hızlıca uygulamaya konur
6
6 www.portakalteknoloji.com19/09/2016 Kural Motorları ● Kural motorları –Common Knowledge –NxBRE –Portellus –Tris –Haley –Jess –Drools –Microsoft Business Rules Engine –......
7
7 www.portakalteknoloji.com19/09/2016 Kural Motorları ● Her kural motorunun için farklı API tanımlanmıştır. ● Birinden diğerine geçmek zordur ● Kural motoru sağlayıcısına bağımlılık yaratır. ● Java Community Process (JCP) iş kuralı motorları standart. –JSR94 – Java Standards For Rule Engines –http://jcp.org/en/jsr/detail?id=94http://jcp.org/en/jsr/detail?id=94
8
8 www.portakalteknoloji.com19/09/2016 Kural Motorları ● JSR94, Kural motoruna Java SE veya Java EE istemcisinden erişim için bir standart sağlar. –Kurallara kaydolmak ve kayıt silmek (register/unregister) –Kuralları incelemek (parse) –Kural meta-datasını incelemek –Kural çalıştırmak –Sonuçları elde etmek –Sonuçları filtrelemek
9
9 www.portakalteknoloji.com19/09/2016 Kural Motorları ● JSR94, aşağıdaki konular için bir standart sağlamaz. –Kural motoru –Kuralların akışı –Kuralların tanımlanması için kullanılan dil –Java teknolojisinin kurulumu
10
10 www.portakalteknoloji.com19/09/2016 Kural Motorları Jess kural motoru için örnek kural tanımı (defrule rule-1 (yagmur) = > (semsiye-getir)) (defrule rule-2 (kaygan-yol) => (dikkatli-araba-kullan)) (defrule rule-3 (yagmur) => (assert kaygan-yol)) (kaygan-yol) (yagmur)
11
11 www.portakalteknoloji.com19/09/2016 Kural Motorları Drools kural motoru için örnek kural tanımı rule "reddedilmediyse onayla" salience -100 when not Rejection() p : Policy(approved == false, policyState:status) exists Surucu(age > 25) Process(status == policyState) then log("ONAYLI: reddedilmemis"); p.setApproved(true); end
12
12 www.portakalteknoloji.com19/09/2016 Kural Motorları Drools xml kural motoru için örnek kural tanımı UserRole.equals(“Admin”) System.out.println( "Sistem Yöneticinizle Görü ş ün" );
13
13 www.portakalteknoloji.com19/09/2016 Kural Motorları Kural Motoruna ba ğ lantı: public class OrnekKural { private static final String KURAL_SAGLAYICISI = "org.jcp.jsr94.jess"; public static void main(String[] args) { try { // Kural servisi sa ğ layıcısını yükle Class.forName("org.jcp.jsr94.jess.RuleServiceProviderImpl"); RuleServiceProvider servis =RuleServiceProviderManager. getRuleServiceProvider(KURAL_SAGLAYICISI); // Get the rule administrator. RuleAdministrator ruleAdministrator =servis.getRuleAdministrator();
14
14 www.portakalteknoloji.com19/09/2016 Kural Motorları InputStream inStream = org.jcp.jsr94.tck.model.Customer.class.getResourceAsStream( "/org/jcp/jsr94/tck/tck_res_1.xml"); RuleExecutionSet res1 =ruleAdministrator. getLocalRuleExecutionSetProvider(null). createRuleExecutionSet( inStream, null ); inStream.close(); String uri = res1.getName(); ruleAdministrator.registerRuleExecutionSet(uri, res1, null); RuleRuntime ruleRuntime = servis.getRuleRuntime(); StatelessRuleSession statelessRuleSession = (StatelessRuleSession) ruleRuntime.createRuleSession(uri,
15
15 www.portakalteknoloji.com19/09/2016 Kural Motorları new HashMap(), RuleRuntime.STATELESS_SESSION_TYPE); Customer inputCustomer = new Customer("test"); inputCustomer.setCreditLimit(5000); Invoice inputInvoice = new Invoice("Invoice 1"); inputInvoice.setAmount(2000); List input = new ArrayList(); input.add(inputCustomer); input.add(inputInvoice); inputCustomer.getCreditLimit()); // Release the statefulRuleSession. statefulRuleSession.release(); System.out.println();
16
16 www.portakalteknoloji.com19/09/2016 Kural Motorları } catch (NoClassDefFoundError e) { if (e.getMessage().indexOf("JessException") != -1) { System.err.println("Error: The RI Jess could not be found."); } else { System.err.println("Error: " + e.getMessage()); } } catch (Exception e) { e.printStackTrace(); }
17
17 www.portakalteknoloji.com19/09/2016 Kural Motorları Standart : JSR94 Java Rule Engine API uyumlu motorlar –Drools –Fair Isaac Blaze Advisor –ILOG JRules –Jess
18
18 www.portakalteknoloji.com19/09/2016 Kural Motorları Standart : JSR94 Java Rule Engine API uyumlu motorlar –Drools http://docs.codehaus.org/display/DROOLS/Home http://labs.jboss.com/portal/jbossrules/docs –Jess http://www.jessrules.com/ http://www.manning.com/friedman-hill/ (Jess in Action)http://www.manning.com/friedman-hill/ –Fair Isaac Blaze Advisor http://www.fairisaac.com/fairisaac –ILOG Jrules http://www.ilog.com/products/jrules/
19
19 www.portakalteknoloji.com19/09/2016 Sorular?
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.