Daftar Mesin Aturan di Java

1. Ikhtisar

Pada artikel ini, kita akan membahas beberapa mesin aturan paling populer untuk Java.

Dalam aplikasi mission-critical, proses memelihara logika bisnis dalam kode sumber bisa menjadi terlalu rumit. Aturan bisnis dapat digunakan untuk memudahkan pengembangan dan pemeliharaan dengan memisahkan logika bisnis dari kode sumber.

Di dunia Java, sebagian besar pustaka mesin aturan menerapkan standar JSR94 yang dikenal sebagai Mesin API Aturan Java.

2. Ngiler

Drools adalah solusi Business Rules Management System (BRMS). Drools dapat berintegrasi dengan jBPM, alat Manajemen Proses Bisnis untuk standarisasi proses, aktivitas acara, tugas, dll.

Jika Anda ingin membaca lebih lanjut, pengantar Drools tersedia di sini, bersama dengan artikel tentang integrasi dengan Spring.

3. Tablet OpenL

Tablet OpenL adalah sistem manajemen aturan bisnis dan mesin aturan bisnis berdasarkan tabel keputusan Excel. Karena format tabel yang digunakan oleh kerangka kerja ini sudah tidak asing lagi bagi pengguna bisnis, ini menjembatani kesenjangan antara pengguna bisnis dan pengembang.

Berikut adalah contoh sederhana bagaimana framework bekerja dengan menggunakan file Excel yang berisi tabel keputusan. Pertama, mari impor dependensinya yang bergantung pada modul org.openl.core dan org.openl.rules:

 org.openl org.openl.core 5.19.4   org.openl.rules org.openl.rules 5.19.4 

Sekarang, POJO Pengguna :

public class User { private String name; // getters and setters }

Dan enum yang akan mewakili hasil dari aturan yang diterapkan:

public enum Greeting { // ... }

Kelas Kasus membungkus objek Pengguna dengan variabel yang mengarah ke hasil:

public class Case { // Variables to infer outcomes // getters and setters }

Antarmuka IRule berisi aturan yang dimasukkan oleh file Excel:

public interface IRule { void helloUser(Case aCase, final Response response); }

Kelas Respon menangani kembalinya aturan yang diterapkan:

public class Response { private String result; private Map map = new HashMap(); }

Kelas utama, yang memicu eksekusi aturan:

public class Main { private IRule instance; public static void main(String[] args) { Main rules = new Main(); // setup user and case here rules.process(aCase); } public void process(Case aCase) { EngineFactory engineFactory = new RulesEngineFactory( getClass().getClassLoader() .getResource("openltablets/HelloUser.xls"), IRule.class); instance = engineFactory.newEngineInstance(); instance.helloUser(aCase, new Response()); } }

4. Aturan Mudah

Aturan Mudah adalah mesin aturan Java sederhana yang menyediakan kerangka kerja ringan dan berbasis POJO untuk mendefinisikan bisnis. Itu dapat membuat aturan kompleks dari yang primitif dengan menggunakan pola komposit.

Framework ini, berbeda dengan kebanyakan mesin aturan tradisional, tidak menggunakan file XML atau file Domain Specific Language apa pun untuk memisahkan aturan dari aplikasi. Ini menggunakan kelas dan metode berbasis anotasi untuk memasukkan logika bisnis ke dalam aplikasi.

Aturan Mudah dapat berguna bagi pengembang untuk membuat dan memelihara aplikasi dengan logika bisnis yang sepenuhnya terpisah dari aplikasi itu sendiri. Di sisi lain, karena kerangka kerja ini tidak menerapkan standar JSR94 dan logika bisnis harus dikodekan langsung ke kode Java.

Di sini kami memberikan contoh "Halo, dunia". Mari impor dependensi yang diperlukan berdasarkan modul easy-rules-core:

 org.jeasy easy-rules-core 3.0.0 

Selanjutnya, kami membuat kelas yang mendefinisikan aturan:

@Rule(name = "Hello World rule", description = "Always say hello world") public class HelloWorldRule { @Condition public boolean when() { return true; } @Action public void then() throws Exception { System.out.println("hello world"); } }

Akhirnya, kami membuat kelas utama:

public class Launcher { public static void main(String... args) { // create facts Facts facts = new Facts(); // create rules Rules rules = new Rules(); rules.register(new HelloWorldRule()); // create a rules engine and fire rules on known facts RulesEngine rulesEngine = new DefaultRulesEngine(); rulesEngine.fire(rules, facts); } }

5. Buku Aturan

RuleBook adalah kerangka kerja Java yang memanfaatkan Java 8 lambda dan Pola Rantai Tanggung Jawab untuk menentukan aturan menggunakan pendekatan BDD sederhana.

Seperti kebanyakan mesin aturan, RuleBook menggunakan konsep " Fakta ", yaitu data yang dipasok ke aturan. RuleBook memungkinkan aturan untuk mengubah keadaan fakta, yang kemudian dapat dibaca dan dimodifikasi oleh aturan lebih jauh di rantai. Untuk aturan-aturan yang membaca dalam data ( Fakta ) dari satu jenis dan keluaran hasil dari jenis yang berbeda, RuleBook memiliki Keputusan .

RuleBook dapat diintegrasikan dengan Spring menggunakan Java DSL.

Di sini, kami memberikan contoh "Halo, dunia" sederhana menggunakan RuleBook. Mari tambahkan ketergantungannya yang mengandalkan modul rulebook-core:

 com.deliveredtechnologies rulebook-core 0.6.2 

Sekarang, kami membuat aturan:

public class HelloWorldRule { public RuleBook defineHelloWorldRules() { return RuleBookBuilder .create() .addRule(rule -> rule.withNoSpecifiedFactType() .then(f -> System.out.print("Hello "))) .addRule(rule -> rule.withNoSpecifiedFactType() .then(f -> System.out.println("World"))) .build(); } } 

Terakhir, kelas utama:

public static void main(String[] args) { HelloWorldRule ruleBook = new HelloWorldRule(); ruleBook .defineHelloWorldRules() .run(new FactMap()); } 

6. Kesimpulan

Dalam artikel singkat ini, kita telah membahas beberapa pustaka terkenal yang menyediakan mesin untuk abstraksi logika bisnis.

Seperti biasa, contoh dari artikel ini tersedia di repositori GitHub kami.