Bagaimana penggunaan mesin aturan berdampak pada desain, implementasi, dan kinerja aplikasi?

11

Saya tertarik pada kemampuan mesin aturan untuk:

  • meluncurkan dan beralih dari logika yang didorong oleh bisnis
  • suruh "pengguna bisnis" melakukan modifikasi aturan-aturan itu dan bukannya pengembang
  • memahami aturan bisnis secara umum

Juga, apakah menggunakan mesin aturan berdampak pada kualitas aplikasi?

Apakah penggunaan mesin aturan berubah jika Anda menggunakan pengaturan 1 mesin vs. arsitektur Anda vs. arsitektur terdistribusi berbasis cloud multi-tier menggunakan ribuan mesin? Apa bedanya?

enonu
sumber

Jawaban:

5

Keputusan apakah akan mengekspos antarmuka untuk personel non-teknis untuk mengubah aturan bisnis sangat tergantung pada beberapa faktor, termasuk tujuan proyek, biaya proyek, masa proyek, dan rasio yang diketahui dengan yang tidak diketahui dalam proyek.

Misalnya, jika saya percaya bahwa tidak ada yang akan menggunakan antarmuka aturan, maka saya mungkin akan memilih untuk tidak mengimplementasikannya. Namun, jika saya memiliki alasan untuk percaya bahwa perubahan akan sering terjadi dan bahwa pengguna akhir yang berbeda akan mengharapkan aturan yang berbeda untuk diterapkan, maka saya akan mempertimbangkan untuk bekerja membangun fungsi tersebut.

Saya memilih untuk melakukan ini pada sebuah proyek, dan butuh bertahun-tahun sebelum fitur itu pernah digunakan secara luas. Saya menduga bahwa pada akhirnya kami akan memiliki pengguna akhir yang ingin menyesuaikan sendiri, jadi kami mengimplementasikan fungsi ini dalam beberapa bagian.

Ini dimulai sebagai sesuatu yang hanya dapat digunakan oleh orang tertentu, seperti pengembang atau admin. Antarmukanya kikuk, tetapi dapat digunakan jika Anda tahu apa yang Anda lakukan. Tetapi pada saat produk itu hampir selesai, logika backend mesin aturan berguna, dan tim desain kami memberikannya antarmuka pengguna yang indah dan menghadap pelanggan.

Jika saya melakukannya secara berbeda, saya mungkin memilih arsitektur basis data yang berbeda hanya karena kurva belajarnya tinggi. Namun singkatnya, membangunnya sejak dini menyebabkan banyak pelanggan menghadapi fitur-fitur di kemudian hari tanpa kesulitan untuk kembali ke kode dan mengubahnya untuk memasukkan semua aturan dinamis.

jmort253
sumber
1
Saya akan menambahkan bahwa pengguna bisnis harus berharap untuk menghabiskan waktu untuk mempelajari antarmuka aturan. Antarmuka akan lebih mudah bagi pengguna untuk digunakan, tetapi pasti akan membutuhkan waktu dan usaha untuk belajar. Mereka seharusnya tidak mengharapkan sesuatu yang bisa dimengerti secara ajaib.
9000
@ 9000 - Poin yang sangat bagus. Saya sudah melihat ini di proyek saya sendiri. Bahkan, seringkali masih melibatkan pelatihan untuk meningkatkan kecepatan pengguna, serta aspek tertentu dari 'menjual' antarmuka ke pengguna dan menunjukkan kepada mereka nilai yang dimilikinya.
jmort253
4

Jika saya melakukan ini, saya akan membuat Bahasa Domain Khusus untuk mengekspresikan aturan, dan mungkin memberikan jenis biz UI untuk memodifikasinya jika diminta. Kemudian gunakan bahasa fungsional (seperti Haskell, Lisp atau Erlang) untuk mengevaluasi aturan.

Jika paralelisme besar diperlukan, saya akan pergi dengan Erlang yang melakukan konkurensi dengan sangat baik. Menggunakan Erlang akan berskala baik dari 1 node ke 100 atau lebih.

Jika Anda menganggap aturan sebagai Aljabar yang akan diterapkan pada dataset, menjadi lebih mudah untuk membuat logika apa yang dibutuhkan dalam kode Anda, dan untuk membuktikan kepada diri sendiri (atau manajer Anda) bahwa itu benar. Ini adalah salah satu tempat di mana bahasa fungsional akan bekerja sesuai keinginan Anda.

Zachary K
sumber
3

Saya menulis aplikasi berdasarkan WF (windows workflow foundation). Bos saya (seorang DBA) yakin bahwa WF dapat melakukan multi-threading tanpa perlu merencanakan konkurensi. Memori terbagi secara menyeluruh, tetapi ada begitu banyak masalah yang tidak dapat saya jelaskan hanya dalam beberapa paragraf dan hanya sedikit berhubungan dengan pertanyaan Anda ... jadi saya lanjutkan.

Kemampuan untuk mengulangi BL:
WF melakukan ini dengan baik.
izinkan nontechies untuk "membangun aplikasi":
WF melakukan ini dengan baik JIKA arsitektur berfungsi DAN nontechies memahami batasan teknis ... Kita tidak.
Kemampuan untuk memahami aturan bisnis secara umum:
Ada beberapa tambahan yang dapat melakukan beberapa hal mendasar seperti sharepoint dapat mengotomatisasi alur kerja. Saya tidak masuk ke barang-barang ini.
Kualitas perangkat lunak yang dijual kembali:
Biasa-biasa saja. WF tidak bekerja dengan baik untuk tujuan kami, tetapi sistemnya dirancang dengan buruk dan tangan saya terikat.
Kecepatan aplikasi:
Lambat. Kurva pembelajaran cukup curam untuk pengembang dan pengguna akhir. Cara WF memisahkan memori (app-domains Jika saya ingat) membuat komunikasi lintas thread, mutex, dan konsep threading lainnya tidak berguna atau tidak berfungsi sama sekali.

Pada akhirnya, saya menulis sebuah prototipe untuk membuktikan bahwa WF gagal dalam penerapannya. Saya menggantinya dengan multi-threading umum. Pembacaan kinerja dan kode meningkat. Ambil ini dengan sebutir garam karena ini adalah aplikasi WF profesional pertama saya.

Nontechs dapat memercayai secara praktis segala sesuatu mungkin terjadi tanpa diperlukan programmer, suatu potensi negatif yang besar untuk keseluruhan "dummy down" BL; masalah sosiologis terkait dengan ini menewaskan proyek.

Jika saya bisa kembali dan melakukannya dengan cara saya : gunakan threading tradisional dan pencetakan BL dicapai melalui Pola Penghias. Saya menulis bukti konsep yang menggunakan teknologi ini dan itu bekerja dengan baik. DAN pemetaan BL harus dibungkus dengan UI SEDERHANA.
Pembaruan
Saya menemukan posting lama yang saya tulis ketika menangani masalah konkurensi. Kode menunjukkan bagaimana mencetak "halo dunia" dalam alur kerja paralel tidak berfungsi tanpa pemahaman tentang apa yang terjadi di bawah selimut (yang mengalahkan seluruh tujuan abstraksi WF). Moderator MSDN menjelaskan ikhtisar tingkat tinggi tentang bagaimana aktivitas paralel benar-benar berurutan. Dia menyimpulkan pada dasarnya "Anda perlu membaca seluruh manual" untuk melakukan sesuatu yang mendasar ini. http://social.msdn.microsoft.com/Forums/en/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b489-7ea5fc31fed8

Semoga berhasil.

P.Brian.Mackey
sumber
Saya tidak punya pengalaman dengan WF, tetapi selalu menjauhinya, karena insting saya adalah melakukan itu. Tetapi saya bertanya-tanya, apakah WinWF bukan hanya versi terbelakang dari sistem-ETL, seperti Rhino ETL, dalam hal apa yang dapat dilakukan dengan kemudahan yang sama dengannya?
Henrik
3

Saya memiliki pengalaman yang kurang sempurna menghubungkan dari kode Java ke mesin aturan Oracle. Beberapa di antaranya mungkin disebabkan oleh kurangnya pengalaman pada bagian dari aturan penulis, tetapi ini adalah apa yang saya hadapi.

  • Kami menerapkan mesin aturan kami sebagai perangkat tanpa kewarganegaraan. Penelepon harus mengumpulkan semua parameter dan menyerahkannya ke mesin untuk evaluasi. Ini berarti bahwa jika aturan membutuhkan bidang data lain, semua klien perlu diperbarui, Ini meniadakan keuntungan yang disebut-sebut karena dapat memperbarui aturan secara mandiri dari konsumen mereka.
  • Mesin menerbitkan SOAP WSDL, tapi itu dihasilkan secara otomatis dari aturan yang ditetapkan. Perubahan kecil pada aturan akan memutus kontrak dengan konsumen.
  • Mesinnya bagus dalam mengevaluasi aturan, tetapi mengerikan dalam memberi tahu kami mengapa evaluasi gagal. Sulit untuk memberi makan pesan kesalahan yang informatif kembali ke pengguna.
  • WSDL tidak cocok untuk konsumsi umum. Rangkaian aturan paling sederhana memiliki WSDL 14 halaman, yang memperlihatkan internal dari basis aturan. Kami harus meletakkan lapisan terjemahan SOA di depan untuk menyajikan fasad yang ramah bisnis. Jadi, alih-alih memanggil perpustakaan lokal yang dapat diandalkan 100%, ada dua server tambahan di loop. Itu tidak menambah keandalan sedikit pun. Ditambah setiap perubahan pada tanda tangan aturan melibatkan tiga tim yang berbeda memperbarui kode. Bukan definisi saya tentang gesit!
  • Setiap kali aturan yang ditetapkan membutuhkan penambahan, WSDL harus diperbarui, yang berarti klien tidak lagi memahaminya. Ini mengarah ke menambahkan titik akhir SOAP baru untuk v2, v3 .. yang memiliki efek knock-on membutuhkan aturan firewall untuk diperbarui.
  • Aturan diekspresikan dalam "bahasa Inggris terstruktur" yang mudah dimengerti untuk aturan sederhana, tetapi dekat dengan buram untuk aturan yang kompleks.
  • Kami tidak pernah bisa menemukan kontraktor yang tahu aturan bahasa pengarang.
  • Bahasa aturan tidak menerapkan array, rekursi atau orientasi objek. Dalam satu kasus, satu-satunya cara untuk menerapkan aturan adalah melalui info ke spreadsheet Excel, di mana aturan itu diterapkan di VB. Mengapa mengganggu?

Saya tidak berpikir pilihan menggunakan mesin aturan (atau tidak) jelas. Saya sarankan Anda membuat prototipe mesin apa pun yang ingin Anda gunakan, kemudian membuat keputusan berdasarkan informasi. Mereka tentu bukan peluru perak ...

kiwiron
sumber