การใช้กฎของเครื่องยนต์ส่งผลต่อการออกแบบการใช้งานและประสิทธิภาพของแอปพลิเคชันอย่างไร


11

ฉันสนใจความสามารถของกฎของเครื่องมือในการ:

  • การเปิดตัวและทำซ้ำมากกว่าตรรกะเชิงธุรกิจ
  • มี "ผู้ใช้ทางธุรกิจ" ดำเนินการแก้ไขกฎเหล่านั้นจริงแทนที่จะเป็นผู้พัฒนา
  • เข้าใจกฎเกณฑ์ทางธุรกิจโดยทั่วไป

นอกจากนี้การใช้เอ็นจินกฎมีผลกับคุณภาพของแอปพลิเคชันหรือไม่

การใช้งานเอ็นจิ้นกฎเปลี่ยนแปลงหรือไม่ถ้าคุณปรับใช้กับการตั้งค่า 1 เครื่องเทียบกับสถาปัตยกรรมของคุณเทียบกับสถาปัตยกรรมแบบกระจายหลายระดับบนคลาวด์โดยใช้เครื่องจักรนับพันเครื่องหรือไม่? แตกต่างกันอย่างไร

คำตอบ:


5

การตัดสินใจว่าจะเปิดเผยส่วนต่อประสานงานสำหรับบุคลากรที่ไม่ใช่ด้านเทคนิคเพื่อปรับเปลี่ยนกฎเกณฑ์ทางธุรกิจหรือไม่นั้นขึ้นอยู่กับปัจจัยหลายประการรวมถึงเป้าหมายของโครงการต้นทุนของโครงการอายุการใช้งานของโครงการและอัตราส่วนของสิ่งที่ไม่รู้ โครงการ.

ตัวอย่างเช่นถ้าฉันเชื่อว่าจะไม่มีใครใช้ส่วนต่อประสานของกฎฉันก็อาจเลือกที่จะไม่ใช้มัน อย่างไรก็ตามหากฉันมีเหตุผลที่เชื่อได้ว่าการเปลี่ยนแปลงจะเกิดขึ้นบ่อยครั้งและผู้ใช้ปลายทางที่แตกต่างกันคาดว่าจะมีกฎที่แตกต่างกันอยู่ฉันจะพิจารณาทำงานเพื่อสร้างฟังก์ชันดังกล่าว

ฉันเลือกที่จะทำสิ่งนี้ในโครงการและต้องใช้เวลาหลายปีกว่าที่คุณสมบัติจะถูกนำมาใช้อย่างกว้างขวาง ฉันสงสัยว่าในที่สุดเราจะมีผู้ใช้ปลายทางที่ต้องการปรับแต่งสิ่งต่าง ๆ ด้วยตัวเองดังนั้นเราจึงใช้ฟังก์ชั่นนี้เป็นชิ้น ๆ

มันเริ่มต้นจากสิ่งที่มีเพียงบางคนเท่านั้นเช่นผู้พัฒนาหรือผู้ดูแลระบบที่สามารถใช้ได้ อินเทอร์เฟซถูก clunky แต่ใช้งานได้ถ้าคุณรู้ว่าคุณกำลังทำอะไร แต่เมื่อถึงเวลาที่ผลิตภัณฑ์ใกล้จะเสร็จสมบูรณ์ตรรกะแบ็กเอนด์ของกฏของกลไกมีประโยชน์และทีมออกแบบของเราให้ส่วนต่อประสานกับผู้ใช้ที่สวยงามและเข้าถึงลูกค้าได้

ถ้าฉันจะทำมันแตกต่างฉันอาจเลือกสถาปัตยกรรมฐานข้อมูลที่แตกต่างกันเพียงเพราะช่วงการเรียนรู้สูง แต่ในระยะสั้นการสร้างให้เร็วขึ้นจะนำไปสู่ลูกค้าจำนวนมากที่ต้องเผชิญกับคุณสมบัติในภายหลังโดยไม่ต้องปวดหัวที่ต้องย้อนกลับไปในรหัสและปรับโครงสร้างใหม่เพื่อรวมกฎแบบไดนามิกทั้งหมด


1
ฉันต้องการเพิ่มว่าผู้ใช้ทางธุรกิจควรคาดหวังว่าจะใช้เวลาในการเรียนรู้อินเทอร์เฟซกฎ อินเทอร์เฟซจะง่ายสำหรับผู้ใช้ แต่จะต้องใช้เวลาและความพยายามในการเรียนรู้ พวกเขาไม่ควรคาดหวังสิ่งที่เข้าใจได้อย่างน่าอัศจรรย์
9000

@ 9000 - จุดที่ดีมาก ฉันเคยเห็นสิ่งนี้ในโครงการของตัวเอง ในความเป็นจริงมันมักจะเกี่ยวข้องกับการฝึกอบรมเพื่อเพิ่มความเร็วให้กับผู้ใช้รวมถึงแง่มุมหนึ่งของการขายอินเทอร์เฟซให้กับผู้ใช้และแสดงให้เห็นถึงคุณค่าที่พวกเขามีต่อพวกเขา
jmort253

4

ถ้าฉันจะทำสิ่งนี้ฉันจะสร้างโดเมนเฉพาะภาษาเพื่อแสดงกฎและอาจให้ biz พิมพ์ UI เพื่อแก้ไขหากได้รับการร้องขอ จากนั้นใช้ภาษาที่ใช้งานได้ (เช่น Haskell, Lisp หรือ Erlang) เพื่อประเมินกฎ

หากต้องการการขนานใหญ่อย่างยิ่งฉันก็จะไปกับ Erlang ซึ่งเห็นพ้องด้วยกันได้ดีมาก การใช้ Erlang จะปรับขนาดจาก 1 โหนดเป็น 100 หรือมากกว่า

หากคุณคิดว่ากฎเป็นพีชคณิตที่จะนำไปใช้กับชุดข้อมูลมันจะง่ายขึ้นมากในการตรรกะสิ่งที่จำเป็นในรหัสของคุณและเพื่อพิสูจน์ตัวเอง (หรือผู้จัดการของคุณ) ว่ามันถูกต้อง นี่คือหนึ่งในสถานที่เหล่านั้นที่ภาษาทำงานจะทำงานในความโปรดปรานของคุณ


3

ฉันเขียนแอปพลิเคชันตาม WF (รากฐานเวิร์กโฟลว์ของ windows) เจ้านายของฉัน (DBA) เชื่อว่า WF สามารถทำการมัลติเธรดได้โดยไม่จำเป็นต้องวางแผนสำหรับการทำงานพร้อมกัน หน่วยความจำถูกแบ่งอย่างละเอียด แต่มีปัญหามากมายที่ฉันไม่สามารถอธิบายได้ในสองสามย่อหน้าและมันเกี่ยวข้องกับคำถามของคุณเพียงเล็กน้อย ... ดังนั้นฉันจึงดำเนินการต่อไป

ความสามารถในการย้ำ BL:
WF ทำได้ดีมาก
อนุญาตให้ผู้ใช้ที่ไม่ใช่เทคโนโลยี "สร้างแอป":
WF ทำได้ดีถ้าสถาปัตยกรรมทำงานและผู้ที่ไม่ได้อยู่ในเทคโนโลยีเข้าใจข้อ จำกัด ทางเทคนิค ... เราไม่ได้
ความสามารถในการทำความเข้าใจกฎเกณฑ์ทางธุรกิจโดยทั่วไป:
มี Add-in บางตัวที่สามารถทำสิ่งพื้นฐานบางอย่างได้เช่นเดียวกับ SharePoint สามารถทำให้เวิร์กโฟลว์อัตโนมัติ ฉันไม่ได้เข้าไปในรายการเหล่านี้
คุณภาพของซอฟแวร์ realeases:
ปานกลาง WF ทำงานได้ไม่ดีสำหรับจุดประสงค์ของเรา แต่ระบบได้รับการออกแบบมาไม่ดีและมือของฉันถูกผูกไว้
ความเร็วการใช้งาน:
ช้า. ช่วงการเรียนรู้ค่อนข้างสูงชันสำหรับผู้พัฒนาและผู้ใช้ทั่วไป วิธีที่หน่วยความจำแยกจากกันของ WF (แอปโดเมนถ้าฉันจำได้) ทำการสื่อสารข้ามเธรด mutexes และแนวคิดเธรดอื่น ๆ kludgy หรือไม่ทำงานเลย

ท้ายที่สุดฉันได้เขียนต้นแบบเพื่อพิสูจน์ว่า WF ล้มเหลวในวิธีการใช้งาน ฉันแทนที่มันด้วยมัลติเธรดทั่วไป ประสิทธิภาพและการอ่านรหัสเพิ่มขึ้น เอามันไปด้วยเม็ดเกลือเพราะนี่เป็นแอปพลิเคชั่น WF ครั้งแรกของฉัน

Nontechs สามารถเชื่อได้ในทุกสิ่งที่เป็นไปได้โดยไม่จำเป็นต้องมีโปรแกรมเมอร์ซึ่งอาจส่งผลเสียเชิงลบอย่างมากต่อการ "หลอกตา" ทั้งหมดของ BL; ปัญหาสังคมวิทยาที่เกี่ยวข้องกับสิ่งนี้ทำให้โครงการเสียชีวิต

ถ้าฉันสามารถย้อนกลับไปทำในแบบของฉัน : ใช้การทำเกลียวแบบดั้งเดิมและการปั้นแบบ BL ที่ทำได้โดยใช้ลวดลายตกแต่ง ฉันเขียนหลักฐานแนวคิดที่ใช้เทคโนโลยีเหล่านี้และทำงานได้ดี และการแมป BL ควรอยู่ใน SIMPLE UI
อัปเดต
ฉันพบโพสต์เก่าที่ฉันเขียนเมื่อทำงานผ่านปัญหาที่เกิดขึ้นพร้อมกัน รหัสแสดงให้เห็นว่าการพิมพ์ "hello world" ในเวิร์กโฟลว์แบบขนานนั้นไม่ทำงานโดยไม่เข้าใจว่าเกิดอะไรขึ้นภายใต้หน้าปก (ซึ่งเอาชนะวัตถุประสงค์ทั้งหมดของสิ่งที่เป็นนามธรรมของ WF) โมเดอเรเตอร์ของ MSDN อธิบายภาพรวมในระดับสูงว่ากิจกรรมเรียงลำดับนั้นมีความต่อเนื่องกันอย่างไร เขาสรุปว่า "คุณต้องอ่านคู่มือทั้งหมด" เพื่อทำสิ่งนี้ขั้นพื้นฐาน http://social.msdn.microsoft.com/Forums/en/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b489-7ea5fc31fed8

โชคดี.


ฉันไม่มีประสบการณ์กับ WF แต่ต้องอยู่ห่าง ๆ เสมอเพราะสัญชาตญาณของฉันคือการทำเช่นนั้น แต่ฉันอดไม่ได้ที่จะสงสัยว่าหาก WinWF ไม่ใช่แค่ระบบ ETL ที่มีความล่าช้าเช่น Rhino ETL ในแง่ของสิ่งที่สามารถทำได้อย่างง่ายดายเช่นเดียวกัน?
Henrik

3

ฉันมีประสบการณ์น้อยกว่าที่สมบูรณ์แบบในการเชื่อมต่อจากโค้ด Java กับเอ็นจิน Oracle บางส่วนนี้อาจเกิดจากการไม่มีประสบการณ์ในส่วนของผู้เขียนกฎ แต่นี่คือสิ่งที่ฉันต้องเผชิญ

  • เราใช้เครื่องมือกฎของเราเป็นอุปกรณ์ไร้สัญชาติ ผู้เรียกต้องรวบรวมพารามิเตอร์ทั้งหมดและส่งไปยังเครื่องยนต์เพื่อทำการประเมิน นี่หมายความว่าหากกฎนั้นจำเป็นต้องใช้เขตข้อมูลอื่นไคลเอนต์ทั้งหมดจำเป็นต้องได้รับการอัปเดตสิ่งนี้ทำให้เกิดความได้เปรียบที่ไม่ได้รับการขนานนามว่าสามารถปรับปรุงกฎได้อย่างอิสระจากผู้บริโภค
  • เอ็นจิ้นเผยแพร่ SOAP WSDL แต่สร้างโดยอัตโนมัติจากชุดกฎ การเปลี่ยนแปลงกฎเล็กน้อยจะทำลายสัญญากับผู้บริโภค
  • เครื่องยนต์ดีในการประเมินกฎ แต่แย่มากที่บอกเราว่าทำไมการประเมินล้มเหลว มันยากที่จะดึงข้อมูลข้อความแสดงข้อผิดพลาดกลับไปยังผู้ใช้
  • WSDL ไม่เหมาะสำหรับการบริโภคทั่วไป ชุดของกฎที่ง่ายที่สุดมี WSDL 14 หน้าซึ่งเปิดเผย internals ของกฎพื้นฐาน เราต้องวางเลเยอร์การแปล SOA ไว้ด้านหน้าเพื่อนำเสนออาคารที่เป็นมิตรกับธุรกิจ ดังนั้นแทนที่จะเรียกใช้ไลบรารีโลคัลที่เชื่อถือได้ 100% มีเซิร์ฟเวอร์พิเศษสองตัวในลูป ที่ไม่ได้เพิ่มความน่าเชื่อถือในอย่างน้อย รวมถึงการเปลี่ยนแปลงใด ๆ กับลายเซ็นของกฎที่เกี่ยวข้องกับสามทีมที่แตกต่างกันในการปรับปรุงรหัส ไม่ใช่คำจำกัดความของฉันของเปรียว!
  • เมื่อใดก็ตามที่ชุดกฎต้องการการเพิ่มเติม WSDL จะต้องได้รับการปรับปรุงซึ่งหมายความว่าลูกค้าจะไม่เข้าใจอีกต่อไป สิ่งนี้นำไปสู่การเพิ่มจุดสิ้นสุด SOAP ใหม่สำหรับ v2, v3 .. ซึ่งมีผลกระทบต่อความต้องการของกฎไฟร์วอลล์ที่ต้องได้รับการปรับปรุง
  • กฎถูกแสดงใน "ภาษาอังกฤษเชิงโครงสร้าง" ซึ่งเข้าใจได้ง่ายสำหรับกฎง่าย ๆ แต่ใกล้ถึงทึบสำหรับกฎที่ซับซ้อน
  • เราไม่สามารถหาผู้รับเหมาที่รู้ภาษากฎการเขียน
  • ภาษาของกฎไม่ได้ใช้อาร์เรย์การเรียกซ้ำหรือการวางแนววัตถุ ในกรณีหนึ่งวิธีเดียวที่จะใช้กฎนั้นคือการเรียกใช้งานสเปรดชีต Excel โดยใช้กฎนั้นใน VB ทำไมต้องรำคาญ

ฉันไม่คิดว่าการเลือกใช้เอ็นจิ้นกฎ (หรือไม่) นั้นชัดเจน ฉันขอแนะนำให้คุณสร้างต้นแบบเครื่องยนต์ใด ๆ ที่คุณตั้งใจจะใช้แล้วตัดสินใจอย่างมีข้อมูล แน่นอนว่าพวกเขาไม่ใช่กระสุนเงิน ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.