คำถามติดแท็ก business-rules

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

9
ฐานข้อมูลควรใช้ตรรกะทางธุรกิจเท่าใด
ฉันทำงานในบางโครงการที่ใช้ตรรกะทางธุรกิจส่วนใหญ่ในฐานข้อมูล (ส่วนใหญ่ผ่านขั้นตอนการจัดเก็บ) ในอีกด้านหนึ่งฉันได้ยินจากเพื่อนโปรแกรมเมอร์บางคนว่านี่เป็นวิธีปฏิบัติที่ไม่ดี ("ฐานข้อมูลอยู่ที่นั่นเพื่อเก็บข้อมูล วิธีใดบ้างที่ดีกว่า ข้อดีของการใช้ตรรกะทางธุรกิจในฐานข้อมูลที่ฉันนึกได้คือ: การรวมศูนย์ของตรรกะทางธุรกิจ ความเป็นอิสระของประเภทแอปพลิเคชันภาษาการเขียนโปรแกรมระบบปฏิบัติการ ฯลฯ ฐานข้อมูลมีแนวโน้มน้อยที่จะโยกย้ายเทคโนโลยีหรือปรับโครงสร้างครั้งใหญ่ (AFAIK); ไม่มีการทำงานซ้ำในการโยกย้ายเทคโนโลยีแอปพลิเคชัน (เช่น. NET เป็น Java, Perl เป็น Python เป็นต้น) ข้อเสีย: SQL นั้นมีประสิทธิผลน้อยกว่าและซับซ้อนกว่าสำหรับการเขียนโปรแกรมตรรกะทางธุรกิจเนื่องจากการขาดไลบรารี่และภาษาสร้างโครงสร้างของภาษาแอพพลิเคชั่นส่วนใหญ่ โค้ดที่ยากขึ้น (ถ้าเป็นไปได้ทั้งหมด) นำมาใช้ซ้ำผ่านไลบรารี IDE ที่มีประสิทธิผลน้อยลง หมายเหตุ: ฐานข้อมูลที่ฉันกำลังพูดถึงนั้นเป็นฐานข้อมูลเชิงสัมพันธ์ฐานข้อมูลยอดนิยมเช่น SQL Server, Oracle, MySql เป็นต้น ขอบคุณ!

2
“ ตรรกะทางธุรกิจ” หมายความว่าอย่างไรหากไม่ใช่“ รหัสบุคคลที่ไม่ใช่บุคคลที่สาม”?
ฉันได้ยินคนพูดถึงตรรกะทางธุรกิจมากมายในที่ทำงานและออนไลน์และฉันได้อ่านคำถามหลายข้อเกี่ยวกับเว็บไซต์นี้ แต่คำนี้ยังไม่สมเหตุสมผลสำหรับฉัน ตัวอย่างเช่นต่อไปนี้เป็นคำสั่ง (ถอดความ) ที่ฉันมักจะเห็น: "ตรรกะทางธุรกิจเป็นส่วนหนึ่งของโปรแกรมของคุณที่เข้ารหัสกฎเกณฑ์ทางธุรกิจที่แท้จริง" คำจำกัดความส่วนใหญ่ที่ฉันได้อ่านเป็นคำวงกลมเช่นนี้ "ตรรกะทางธุรกิจคือทุกสิ่งที่ไม่เหมือนใครสำหรับแอปพลิเคชันของคุณโดยเฉพาะ" ฉันไม่เห็นว่าสิ่งนี้แตกต่างจาก "แอปพลิเคชันของคุณโดยเฉพาะคืออะไร แต่เป็นตรรกะทางธุรกิจ" เว้นแต่ว่าเราจะมีการคิดค้นใหม่โดยบังเอิญ ดังนั้นชื่อคำถาม "ควรมี Business Logic Layer เหนือ Data Access Layer ของคุณและต่ำกว่า GUI Layer ของคุณ" ในรหัสที่ฉันเขียนตัวเข้าถึงฐานข้อมูลต้องทราบว่าข้อมูลใดที่พวกเขาควรจะเข้าถึงและรหัส UI ต้องรู้มากมายเกี่ยวกับสิ่งที่กำลังแสดงเพื่อแสดงอย่างถูกต้องและไม่มีอะไรทำระหว่าง ทั้งสองแห่งนั้นไม่ใช่การส่งข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ ดังนั้นสิ่งที่ควรจะเป็น Business Logic Layer? "ตรรกะทางธุรกิจควรแยกออกจากตรรกะการนำเสนอ" คำขอคุณสมบัติส่วนใหญ่ที่เราได้รับคือการเปลี่ยนตรรกะการนำเสนอด้วยเหตุผลทางธุรกิจ หากหนึ่งในกฎเกณฑ์ทางธุรกิจคือการแสดงราคาพันธบัตรรัฐบาลสหรัฐฯในรูปแบบที่ 32 โดยค่าเริ่มต้น (ในขณะเดียวกันก็ให้ UI สำหรับผู้ใช้ในการกำหนดค่านั้น) ตรรกะการนำเสนอต้องมีอย่างน้อยต้องรู้ว่ามีกฎนี้อยู่หรือไม่ นอกจากนี้ดูเหมือนว่าส่วนสำคัญของการออกแบบ UX ช่วยให้ผู้ใช้เข้าใจกฎเกณฑ์ทางธุรกิจซอฟต์แวร์ของเราพยายามนำไปใช้ เป็นไปได้หรือไม่ที่ฉันอยู่ในทีมที่ทำแค่ตรรกะทางธุรกิจและตรรกะอื่น ๆ ที่ไม่ใช่ธุรกิจกำลังทำโดยทีมอื่น ๆ ? …

4
BDD เขียนได้จริง ๆ โดยผู้ที่ไม่ใช่โปรแกรมเมอร์หรือไม่?
การพัฒนาพฤติกรรมที่ขับเคลื่อนด้วยสัญลักษณ์ของสถานการณ์“ ที่ได้รับเมื่อนั้น” ได้รับการเน้นย้ำอย่างมากสำหรับการใช้ที่เป็นไปได้ในฐานะวัตถุขอบเขตสำหรับการประเมินการทำงานของซอฟต์แวร์ ฉันยอมรับอย่างแน่นอนว่าGherkinหรือสคริปต์การกำหนดคุณสมบัติที่คุณต้องการเป็นDSL ที่สามารถอ่านได้ทางธุรกิจและมอบคุณค่าเช่นนี้แล้ว อย่างไรก็ตามฉันไม่เห็นด้วยที่จะไม่สามารถเขียนโปรแกรมได้ (เช่นMartin Fowler ) ใครบ้างมีบัญชีของสถานการณ์ที่เขียนโดยไม่ใช่โปรแกรมเมอร์แล้ว instrumented โดยนักพัฒนา หากมีความเห็นพ้องต้องกันเกี่ยวกับการขาดความสามารถในการเขียนคุณจะเห็นปัญหากับเครื่องมือที่แทนที่จะเริ่มต้นด้วยสถานการณ์และการใช้เครื่องมือพวกเขาจะสร้างสถานการณ์ที่สามารถอ่านได้ทางธุรกิจจากการทดสอบจริงหรือไม่ อัปเดต:เกี่ยวกับเครื่องมือ“ ตัวสร้างสถานการณ์จำลอง” แน่นอนว่ามันจะไม่เดาภาษาธุรกิจอย่างน่าอัศจรรย์;) แต่เหมือนกับที่เราใช้ regexp matchers ในการสร้างแบบทดสอบจากบนลงล่าง (ในมิติที่เป็นนามธรรม) เราสามารถใช้ ผู้สร้างสตริงเพื่อสร้างสถานการณ์ในแนวทางจากล่างขึ้นบน ตัวอย่าง“ เพื่อให้ความคิดเท่านั้น”: Given I am on page ${test.currentPage.name} And I click on element ${test.currentAction.element} …

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

7
วัตถุธุรกิจ - ภาชนะบรรจุหรือฟังก์ชั่น?
นี่เป็นคำถามที่ฉันถามกลับไปซักพักแล้ว แต่มันอาจจะดีกว่าที่นี่ ... ที่ที่ฉันทำงานเราได้ย้อนกลับไปในเรื่องนี้หลายครั้งและกำลังมองหาการตรวจสุขภาพ นี่คือคำถาม: หาก Business Objects เป็น data container (เหมือนDTO ) หรือควรมีตรรกะที่สามารถใช้งานบางอย่างกับวัตถุนั้นได้ ตัวอย่าง - นำวัตถุลูกค้าอาจมีคุณสมบัติทั่วไปบางอย่าง (ชื่อรหัส ฯลฯ ) หากวัตถุลูกค้านั้นควรมีฟังก์ชั่น (บันทึก, คำนวณ, ฯลฯ )? การใช้เหตุผลหนึ่งบรรทัดบอกว่าแยกวัตถุออกจากฟังก์ชั่น (ผู้รับผิดชอบหลักเดียว) และวางฟังก์ชันการทำงานในเลเยอร์หรือตรรกะทางธุรกิจ อีกเหตุผลหนึ่งบอกว่าไม่ใช่ถ้าฉันมีวัตถุลูกค้าฉันแค่ต้องการโทรหาลูกค้าบันทึกและทำได้ด้วย ทำไมฉันต้องรู้เกี่ยวกับคลาสอื่นเพื่อบันทึกลูกค้าถ้าฉันใช้วัตถุ? โครงการสองโครงการสุดท้ายของเรามีวัตถุที่แยกออกจากฟังก์ชันการทำงาน แต่การอภิปรายได้รับการยกขึ้นอีกครั้งในโครงการใหม่ ซึ่งทำให้รู้สึกมากขึ้นและทำไม?

6
แสดงถึงกฎธุรกิจที่มีข้อยกเว้น
ฉันรู้ว่ามันแพง แต่ (IMO) ฉันเชื่อว่านี่เป็นวิธีปฏิบัติที่ดีมาก ฉันกำลังพูดถึงกฎอย่างเช่นพูดว่าคุณไม่สามารถบันทึกใบแจ้งหนี้ได้หากคุณไม่ใช่พนักงานขาย ... ดังนั้นในกรณีนี้ให้ยกเว้นว่า "คุณไม่ได้รับอนุญาต" หรือเช่น ... อีกวิธีหนึ่งที่จะมีวัตถุที่มีสถานะหรืออะไรทำนองนั้น มีวิธีอื่นอีกไหม? คุณรู้สึกอย่างไรเกี่ยวกับเรื่องนี้?

4
การตรวจสอบความถูกต้องของสถาปัตยกรรมสะอาดในเลเยอร์โดเมนกับข้อมูลคงอยู่หรือไม่
ฉันเรียนรู้เรื่องการทำความสะอาดและด้วยเหตุนี้ฉันจึงคิดใหม่อย่างมากเกี่ยวกับวิธีการออกแบบและเขียนซอฟต์แวร์ สิ่งที่ฉันยังคงต่อสู้ด้วยมีไว้สำหรับกฎเกณฑ์ทางธุรกิจเช่น "ในการอัปเดตการบันทึกบางรายการก่อนอื่นโหลดรายการทั้งหมดที่ฉันได้รับอนุญาตให้ดู / แก้ไข ฯลฯ ยืนยันว่ารายการนี้อยู่ในรายการ และหมวดหมู่รายการไม่ได้ถูกล็อกจากการใช้งาน (และกฎอื่น ๆ ฯลฯ ) ".. เนื่องจากเป็นกฎธุรกิจ (ซับซ้อน แต่ไม่ผิดปรกติ) ดังนั้นจึงควรจัดการในโดเมนแอปพลิเคชันแทนที่จะผลักดันตรรกะทางธุรกิจลงใน ชั้น db / การคงอยู่ อย่างไรก็ตามดูเหมือนว่าสำหรับฉันที่จะตรวจสอบเงื่อนไขเหล่านี้ได้อย่างมีประสิทธิภาพมันมักจะได้รับการจัดการที่ดีที่สุดกับแบบสอบถาม DB ที่สร้างขึ้นมาอย่างดีแทนที่จะโหลดข้อมูลทั้งหมดลงในโดเมนแอปพลิเคชัน ... หากไม่มีการปรับให้เหมาะสมก่อนเวลาอันควรแนวทางที่แนะนำหรือบทความบ็อบลุงจัดการกับคำถามนี้คืออะไร หรือเขาจะพูดว่า "ตรวจสอบในโดเมนจนกว่ามันจะกลายเป็นปัญหา" ?? ฉันกำลังดิ้นรนเพื่อค้นหาตัวอย่าง / ตัวอย่างที่ดีสำหรับสิ่งอื่นใดนอกเหนือจากกรณีพื้นฐานที่สุดของการใช้งาน ปรับปรุง: สวัสดีทุกคนขอบคุณสำหรับการตอบกลับ ฉันควรจะชัดเจนกว่าฉันเขียนซอฟต์แวร์ (ส่วนใหญ่เป็นแอปพลิเคชันเว็บ) เป็นเวลานานและมีประสบการณ์แล้วและเห็นด้วยกับทุกหัวข้อที่คุณอธิบายร่วมกัน (ตรวจสอบโดยแบ็กเอนด์ไม่เชื่อถือข้อมูลลูกค้าโดยทั่วไป ไล่ล่าประสิทธิภาพดิบเมื่อจำเป็นเท่านั้น แต่รับทราบจุดแข็งของเครื่องมือ db เมื่อมีให้ใช้ ฯลฯ ) และได้ผ่านวงจรการเรียนรู้ของนักพัฒนาของ "โยนทั้งหมดเข้าด้วยกัน" เพื่อ "สร้างตัวควบคุมไขมันยักษ์ด้วยแอปพลิเคชัน N-tiers" และตอนนี้ชอบและตรวจสอบสไตล์ความรับผิดชอบที่สะอาด …

4
ทำอย่างไรให้พอดีกับกฎของเอ็นจินในสถาปัตยกรรมไมโครเซอร์วิสเมื่อต้องการข้อมูลอินพุตจำนวนมาก?
สถานการณ์ปัจจุบัน เรากำลังดำเนินการ (และตอนนี้ยังคงรักษา) เว็บแอปพลิเคชันการช็อปปิ้งออนไลน์ในสถาปัตยกรรม microservice หนึ่งในความต้องการก็คือธุรกิจจะต้องสามารถใช้กฎกับสิ่งที่ลูกค้าของเราเพิ่มลงในรถเข็นของพวกเขาเพื่อปรับแต่งประสบการณ์ของพวกเขาและลำดับท้ายที่สุด เห็นได้ชัดว่าต้องวางเอ็นจิ้นกฎทางธุรกิจและเราได้ใช้ "บริการไมโคร" ที่เฉพาะเจาะจงสำหรับสิ่งนี้ (ถ้าเรายังคงเรียกมันได้) ในช่วงหนึ่งปีที่ผ่านมาเอ็นจินกฎนี้มีความซับซ้อนมากขึ้นเรื่อย ๆ ต้องการข้อมูลมากขึ้น (เช่นเนื้อหาของรถเข็น แต่ยังรวมถึงข้อมูลผู้ใช้บทบาทของเขาบริการที่มีอยู่ของเขาข้อมูลการเรียกเก็บเงินบางอย่างเป็นต้น) เพื่อให้สามารถ คำนวณกฎเหล่านั้น ในขณะนี้shopping-cartmicroservice ของเรากำลังรวบรวมข้อมูลทั้งหมดจาก microservices อื่น ๆ แม้ว่าส่วนหนึ่งของข้อมูลนี้จะถูกใช้งานโดยshopping-cartส่วนใหญ่จะใช้เพื่อป้อนกฎของเครื่องมือเป็นส่วนใหญ่ ข้อกำหนดใหม่ ตอนนี้มาถึงความต้องการแอปพลิเคชั่น / ไมโครไซต์อื่นเพื่อนำเอ็นจินกฎกลับมาใช้ใหม่สำหรับข้อกำหนดที่คล้ายกัน ในสถานการณ์ปัจจุบันพวกเขาจะต้องส่งข้อมูลชนิดเดียวกันเรียกไมโครไซต์เดียวกันและสร้าง (เกือบ) ทรัพยากรเดียวกันเพื่อให้สามารถเรียกเครื่องมือกฎ ดำเนินการต่อตามที่เป็นอยู่เราจะเผชิญกับปัญหาหลายประการ: ทุกคน (เรียกเครื่องมือกฎ) ต้องนำการดึงข้อมูลกลับมาใช้ใหม่แม้ว่าพวกเขาจะไม่ต้องการมัน การร้องขอไปยังเอ็นจินกฎมีความซับซ้อน ต่อไปในทิศทางนี้เราจะต้องขนส่งข้อมูลนี้ไปทั่วเครือข่ายสำหรับคำขอจำนวนมาก (คิดว่าμs A μsโทรμs B เรียกเครื่องมือกฎ แต่ A มีข้อมูลที่ต้องการกฎเครื่องยนต์อยู่แล้ว); shopping-cart ได้กลายเป็นใหญ่เนื่องจากการดึงข้อมูลทั้งหมด ฉันอาจลืม ... เราจะทำอย่างไรเพื่อหลีกเลี่ยงปัญหาเหล่านี้ เป็นการดีที่เราจะหลีกเลี่ยงการเพิ่มความซับซ้อนมากขึ้นในเครื่องมือกฎ …

6
วิธีจัดทำเอกสารกฎเกณฑ์ทางธุรกิจ
ฉันสงสัยว่าอะไรจะเป็นวิธีที่เป็นทางการและเป็นวิธีที่ได้รับการฝึกฝนกันมากที่สุดในการทำเอกสารกฎเกณฑ์ทางธุรกิจ คุณจะทำเอกสารข้อกำหนดของ UI ของสิ่งประดิษฐ์เพื่อการพัฒนาได้อย่างไร (เช่นฟิลด์เอกสารแบบฟอร์มและวิธีการทำงานของปุ่มบนฟอร์มข้อความข้อมูล ฯลฯ )

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

6
วิธีกำหนดกฎเกณฑ์ทางธุรกิจที่ซับซ้อนโดยใช้เรื่องราวของผู้ใช้
คำจำกัดความที่รวดเร็วและสกปรกของเรื่องราวของผู้ใช้ : "As a <role>, I want <goal/desire> so that <benefit>" ในคำจำกัดความที่ยอมรับกันโดยทั่วไปนี้จะมีพื้นที่เพียงเล็กน้อยสำหรับการกำหนดกฎเกณฑ์ทางธุรกิจข้อ จำกัด หรืออินพุตของผู้ใช้ ตัวอย่างเล็กน้อยเพื่ออธิบาย: "As a <librarian>, I want to <register new books> so that <students can find their availability online>" ในตัวอย่างที่โง่นี้ใครจะกำหนดฟิลด์ที่จำเป็นเมื่อลงทะเบียนหนังสือ ควรเขียนที่ไหน? หรือควรส่งกฎธุรกิจที่จำเป็นตามคำบอกเล่าจากเจ้าของผลิตภัณฑ์?

2
มีใครบ้างที่ใช้ Windows Workflow สำหรับเอ็นจิน Business Rules / Validation เรียบร้อยแล้ว
ฉันสงสัยว่าถ้าใครใช้ Windows Workflow Foundation สำหรับเอ็นจิ้น BusinessRules / Validation สำเร็จหรือถ้าคุณรู้รหัสตัวอย่างหรือบทความเกี่ยวกับเรื่องนี้ ถ้าคุณเคยใช้มันมาก่อนคุณคิดอย่างไร? เป็นอย่างไรบ้างเมื่อเปรียบเทียบกับระบบ BusinessRule / Validation อื่น ๆ ? ฉันคิดว่ากฎเช่น if (A, B, and C) AllowAccess(); หรือ if (Value between X and Y) return true;

4
การกระจายข้อมูลข้ามขอบเขตวัตถุ
หลายครั้งที่วัตถุธุรกิจของฉันมักจะมีสถานการณ์ที่ข้อมูลจำเป็นต้องข้ามขอบเขตวัตถุบ่อยเกินไป เมื่อทำ OO เราต้องการให้ข้อมูลอยู่ในวัตถุเดียวและมากที่สุดเท่าที่เป็นไปได้รหัสทั้งหมดที่เกี่ยวข้องกับข้อมูลนั้นควรอยู่ในวัตถุนั้น อย่างไรก็ตามกฎเกณฑ์ทางธุรกิจไม่ได้ปฏิบัติตามหลักการนี้ทำให้ฉันมีปัญหา ตัวอย่างเช่นสมมติว่าเรามีคำสั่งซื้อที่มีหมายเลขของ OrderItems ซึ่งอ้างถึง InventoryItem ซึ่งมีราคา ฉันเรียกใช้ Order.GetTotal () ซึ่งสรุปผลของ OrderItem.GetPrice () ที่ทวีคูณปริมาณโดย InventoryItem.GetPrice () จนถึงตอนนี้ดีมาก แต่จากนั้นเราพบว่าบางรายการมีการขายสองรายการต่อการจัดการหนึ่งรายการ เราสามารถจัดการสิ่งนี้ได้โดยให้ OrderItem.GetPrice () ทำบางอย่างเช่น InventoryItem.GetPrice (ปริมาณ) และปล่อยให้ InventoryItem จัดการกับสิ่งนี้ อย่างไรก็ตามเราพบว่าดีลแบบสองต่อหนึ่งนั้นมีระยะเวลาที่ จำกัด เท่านั้น ช่วงเวลานี้จะต้องเป็นไปตามวันที่สั่งซื้อ ตอนนี้เราเปลี่ยน OrderItem.GetPrice () เป็น InventoryItem.GetPrice (quatity, order.GetDate ()) แต่เราต้องสนับสนุนราคาที่แตกต่างกันขึ้นอยู่กับระยะเวลาที่ลูกค้าอยู่ในระบบ: InventoryItem.GetPrice (ปริมาณ, คำสั่งซื้อ GetDate (), คำสั่งซื้อ GetCustomer …

3
คุณติดตามกฎทางธุรกิจที่ซับซ้อนนอกรหัสได้อย่างไร
ฉันสนใจที่จะเห็นว่าคนอื่นทำสิ่งนี้อย่างไร โดยเฉพาะอย่างยิ่งในสถานการณ์ที่ลูกค้าหลายรายใช้ฐานซอฟต์แวร์เดียวกันกับกฎเกณฑ์ทางธุรกิจที่แตกต่างกันเล็กน้อย คุณใช้วิธีปฏิบัติแบบใดในการจัดทำเอกสารว่าทุกอย่างควรจะทำงานหรือกฎธุรกิจ โดยพื้นฐานแล้วเมื่อนักพัฒนาใหม่เข้ามาในทีมก็สามารถเข้าถึงได้ง่ายเพื่อดูว่าสิ่งต่าง ๆ ควรทำงานอย่างไรเพราะมีความแตกต่างระหว่างการทำสิ่งที่ปราศจากข้อบกพร่องและการทำงานอย่างถูกต้อง มันจะดีจริง ๆ ที่ได้ไปทรัพยากรแทนที่จะต้องนำสถาปนิกหรือ BSA เข้ามาในการสนทนาทุกครั้งที่มีคำถามเกิดขึ้นว่าควรประมวลผลอะไรบ้าง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.