ถึงเวิร์กโฟลว์หรือไม่สู่เวิร์กโฟลว์?


122

ฉันรับผิดชอบทีมนักพัฒนาที่กำลังจะเริ่มพัฒนาระบบการเคลมประกันที่มีน้ำหนักเบา ระบบเกี่ยวข้องกับงานด้วยตนเองและเวิร์กโฟลว์ทางธุรกิจจำนวนมากและเรากำลังพิจารณาการใช้ Windows Workflow (.NET 4.0)

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

  1. ตรวจสอบลูกค้าว่ามีการฉ้อโกง - ขั้นตอนด้วยตนเองโดยผู้ประกอบการเรียก บริษัท สินเชื่อหลายแห่งเพื่อตรวจสอบและประเมินศักยภาพของลูกค้าที่ฉ้อโกง จากที่นี่งานย่อยสามารถป้อนสถานะย่อยได้หลายสถานะ (กำลังดำเนินการตรวจสอบ, การตรวจสอบการอ้างอิงล้มเหลว, การตรวจสอบการอ้างอิงผ่าน ฯลฯ )
  2. ส่งสินค้าไปยังศูนย์ซ่อม - กระบวนการแบบแมนนวลซึ่งสินค้าที่ผู้ถือกรมธรรม์ยื่นข้อเรียกร้องจะถูกส่งไปที่ศูนย์ซ่อมเพื่อแก้ไข จากที่นี่งานย่อยสามารถป้อนสถานะย่อยได้หลายสถานะ (กำลังรอการซ่อมแซมอยู่ระหว่างดำเนินการซ่อมแซมโพสต์ ฯลฯ ) การอ้างสิทธิ์สามารถดำเนินการได้ต่อเมื่อสถานะของงานย่อยแต่ละงานถึงสถานะที่กำหนดไว้ล่วงหน้า (ตามกฎทางธุรกิจ)

ดูเหมือนว่า Workflow จะเป็นตัวเลือกเทคโนโลยีที่ดีที่สุด อย่างไรก็ตามฉันมีข้อกังวลเล็กน้อยในการใช้ WF 4.0

  1. ชุดทักษะ - เมื่อดูชุดทักษะของนักพัฒนาโดยเฉลี่ยแล้วฉันไม่เห็นนักพัฒนาหลายคนที่เข้าใจหรือรู้จักเวิร์กโฟลว์
  2. ความสามารถในการบำรุงรักษา - ดูเหมือนว่าชุมชนจะได้รับการสนับสนุนเพียงเล็กน้อยสำหรับโครงการ WF 4.0 และการขาดทักษะนี้ทำให้เกิดความกังวลเกี่ยวกับความสามารถในการบำรุงรักษา
  3. อุปสรรคในการเข้า - ฉันรู้สึกว่า Windows Workflow มีเส้นโค้งการเรียนรู้ที่สูงชันและไม่ใช่เรื่องง่ายที่จะหยิบขึ้นมา
  4. ผลิตภัณฑ์ใหม่ - เนื่องจากเวิร์กโฟลว์ถูกเขียนใหม่ทั้งหมดสำหรับ. NET 4.0 ฉันเห็นว่าผลิตภัณฑ์เป็นผลิตภัณฑ์รุ่นแรกและอาจไม่มีความเสถียรที่จำเป็น
  5. ชื่อเสียง - เวิร์กโฟลว์เวอร์ชันก่อนหน้าไม่ได้รับการตอบรับอย่างดีถือว่ายากที่จะพัฒนาและส่งผลให้การดำเนินธุรกิจไม่ดี

ดังนั้นคำถามของฉันคือเราควรใช้ Windows Workflow (WF) 4.0 สำหรับสถานการณ์นี้หรือไม่หรือมีเทคโนโลยีทางเลือกอื่น (เช่นSimple State Machineฯลฯ ) หรือแม้แต่ Workflow Engine ที่ดีกว่าที่จะใช้


10
การโหวตเพิ่มขึ้นหลายครั้งและไม่มีคำตอบ ... ดูเหมือนว่าเราทุกคนอยู่ในเรือลำเดียวกัน ... ;)
CJM

1
เหอเหอเหอ ... บางทีที่ไม่ได้คำตอบก็เป็นเพราะวันศุกร์สินะ?
Kane

2
สำหรับแหล่งข้อมูลที่ยอดเยี่ยมมากมายบน WF4 โปรดดูendpoint.tv
Ron Jacobs

4
ไม่ฉันตัดสินใจต่อต้าน WF4 และดีใจที่ฉันทำ - มีคนที่มีความรู้ WF4 ไม่เพียงพอบวกกับธุรกิจได้เปลี่ยนใจหลายครั้งที่ใช้ WF4 จะทำให้ระบบดูแลรักษาและสนับสนุนได้ยากอย่างไม่น่าเชื่อ
Kane

10
@Kane - คุณทิ้งรายละเอียดที่ชุ่มฉ่ำ: คุณทำอะไรแทน WF4? :)
Peter Lillevold

คำตอบ:


51

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

จากคำอธิบายปัญหาทางธุรกิจของคุณดูเหมือนว่า WF4 จะเข้ากันได้ดีดังนั้นจึงไม่มีปัญหา

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

เวลาส่วนใหญ่ในการใช้บริการเวิร์กโฟลว์ที่โฮสต์ใน IIS / WAS เป็นเส้นทางที่ดีที่สุดเมื่อใช้เวิร์กโฟลว์ประเภทที่รันเป็นเวลานานเหล่านี้ นั่นทำให้การแก้ปัญหาการกำหนดเวอร์ชันไม่ยากเช่นกันเพียงแค่ให้ข้อความแรกส่งคืนเวอร์ชันเวิร์กโฟลว์และทำให้เป็นส่วนหนึ่งของแต่ละข้อความที่ตามมา จากนั้นวางเราเตอร์ WCF ไว้ระหว่างนั้นจะกำหนดเส้นทางข้อความไปยังปลายทางที่ถูกต้องตามเวอร์ชัน ขั้นพื้นฐานคืออย่าเปลี่ยนขั้นตอนการทำงานที่มีอยู่สร้างใหม่เสมอ

ฉันมีคำแนะนำอะไรให้คุณบ้าง? อย่าเล่นการพนันครั้งใหญ่กับสิ่งที่ไม่รู้จักและสำหรับคุณเทคโนโลยีที่ยังไม่ผ่านการพิสูจน์ ทำชิ้นส่วนเล็ก ๆ ที่ไม่สำคัญของแอปพลิเคชันโดยใช้ WF4 ด้วยวิธีนี้หากใช้งานได้คุณสามารถขยายได้ แต่ถ้าล้มเหลวคุณสามารถฉีกออกและแทนที่ด้วยรหัส. NET แบบเดิม ๆ ด้วยวิธีนี้คุณจะได้รับประสบการณ์จริงกับ WF4 แทนที่จะต้องอาศัยการตัดสินใจเกี่ยวกับข้อมูลมือสองและคุณได้เรียนรู้เทคโนโลยีใหม่ที่มีประสิทธิภาพในกระบวนการนี้ ถ้าเป็นไปได้ให้เรียนหลักสูตร WF4 เพราะจะช่วยให้คุณประหยัดเวลาได้มากในการเร่งความเร็ว (เสียบปลั๊กตัวเองที่ไร้ยางอายที่นี่ )

เกี่ยวกับ Simple State Machine ฉันไม่ได้ใช้มัน แต่ฉันรู้สึกว่ามันทำงานสั้น ๆ ในหน่วยความจำเครื่องสถานะ ประโยชน์หลักอย่างหนึ่งของ WF4 คือแง่มุมที่ใช้งานได้ยาวนาน


2
ฉันเห็นด้วย WF4 ทำให้สมองของฉันละลายไปหมด ฉันเสียใจที่ตัดสินใจ (ไม่ใช่ของฉัน) ที่จะใช้มันในเวลานั้นและเราควรรอ. NET 4.5 หากคุณทำข้อผิดพลาดในเวิร์กโฟลว์และมีข้อบกพร่องเกิดขึ้นหลังจากแก้ไขข้อบกพร่องในการออกแบบ WF แล้วคุณจะไม่สามารถเชื่อมโยงกลับไปยังเวิร์กโฟลว์ที่ใช้งานได้ยาวนาน คุณต้องเริ่มต้นใหม่เป็นหลัก 3.5 มี DynamicUpdates แม้ว่าพวกเขาจะออกจาก 4.0 การอัปเดตแบบไดนามิกและการกำหนดเวอร์ชันแบบเคียงข้างกันใน 4.5 เป็นสิ่งสำคัญยิ่งต่อความสำเร็จของโซลูชัน Windows WF จากประสบการณ์ของฉัน นั่นเป็นเพียงส่วนเล็ก ๆ ของภาพเท่านั้น
Stephen York

17

ฉันเคยตกอยู่ในสถานการณ์ที่กลืนไม่เข้าคายไม่ออกนี้มาแล้วสองครั้งและฉันเลือกที่จะไม่ใช้รองพื้น Work Flow ข้อควรพิจารณาบางประการ (คล้ายกับของคุณ) คือ

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

เมื่อมองย้อนกลับไป 13-14 เดือนฉันยังคิดว่าการตัดสินใจไม่ใช้ WF นั้นถูกต้อง IMO, WF เหมาะสมเมื่อมีแนวโน้มที่จะเกิดขึ้นอย่างชัดเจนว่าขั้นตอนการทำงานสามารถเปลี่ยนแปลงได้และ / หรือกฎเกณฑ์ทางธุรกิจสามารถเปลี่ยนแปลงได้ WF อนุญาตให้แยกเวิร์กโฟลว์ในไฟล์แยกต่างหากดังนั้นการกำหนดค่าโดยผู้ใช้จะง่ายกว่า


15

เราใช้ WF 4.0 ในช่วงสองสามเดือนที่ผ่านมา ฉันต้องบอกว่ามันท้าทายที่จะคิดแบบเวิร์กโฟลว์ อย่างไรก็ตามฉันสามารถบอกคุณได้ว่ามันคุ้มค่า เรารู้น้อยมากเมื่อเราเริ่มต้น เราได้ซื้อหนังสือสำหรับมือใหม่และมืออาชีพสำหรับ WF 4.0 ซึ่งช่วยได้ ฉันเองดูวิดีโอออนไลน์มากมายและติดตาม PDC 2009 สำหรับข่าวด่วนเกี่ยวกับ WF 4.0 และมันแตกต่างจากเวอร์ชันก่อนหน้านี้อย่างไร สิ่งสำคัญอย่างหนึ่งที่เราต้องเสนอแนวทางแก้ไขคือวิธีที่เราจัดการกับ In / Our Arguments ในเวิร์กโฟลว์โดยไม่ผูกมัดกิจกรรมที่กำหนดเองของเรากับข้อมูลบางประเภทและวิธีการส่งผ่านพารามิเตอร์ระหว่างกิจกรรม ฉันได้หาวิธีแก้ปัญหาที่ดีสำหรับสิ่งนั้นและประสบการณ์เวิร์กโฟลว์ที่เรามีจนถึงตอนนี้ก็ไม่เลวเลย อันที่จริงแล้ว เรามีแอปพลิเคชั่นที่ต้องใช้เวิร์กโฟลว์ซึ่งมีขนาดใหญ่ขึ้นเรื่อย ๆ และฉันนึกไม่ถึงเลยว่าตัวเองจะแก้ปัญหานี้ในสภาพแวดล้อมที่แตกต่างออกไป ฉันชอบเอฟเฟกต์ภาพที่มีมันทำให้ฉันห่างจากรายละเอียดของการสร้าง if / else etc และทำให้กฎทางธุรกิจชัดเจนในลักษณะที่ไม่ทำให้คุณต้องดำดิ่งลงไปในบรรทัดของโค้ดเพื่อรู้ว่าเกิดอะไรขึ้นหรือ วิธีแก้ไขข้อบกพร่องบางอย่าง อย่างไรก็ตามโครงการที่เราทำนั้นคล้ายกับที่คุณอธิบายไว้มากและเป็นโครงการขนาดกลาง คุณสามารถบอกได้จากคำพูดของฉันว่าฉันชอบมันและฉันขอแนะนำแม้ว่าจะมีความเสี่ยงอยู่บ้างเนื่องจากเป็นเทคโนโลยีใหม่และคุณต้องคิดแนวคิดใหม่ ๆ มันทำให้ฉันอยู่ห่างจากรายละเอียดของโครงสร้าง if / else etc และทำให้กฎทางธุรกิจชัดเจนในลักษณะที่ไม่ทำให้คุณถูกบังคับให้ดำดิ่งลงไปในบรรทัดของโค้ดเพื่อให้ทราบว่าเกิดอะไรขึ้นหรือจะแก้ไขข้อบกพร่องบางอย่างได้อย่างไร อย่างไรก็ตามโครงการที่เราทำนั้นคล้ายกับที่คุณอธิบายไว้มากและเป็นโครงการขนาดกลาง คุณสามารถบอกได้จากคำพูดของฉันว่าฉันชอบมันและฉันขอแนะนำแม้ว่าจะมีความเสี่ยงอยู่บ้างเนื่องจากเป็นเทคโนโลยีใหม่และคุณต้องคิดแนวคิดใหม่ ๆ มันทำให้ฉันอยู่ห่างจากรายละเอียดของโครงสร้าง if / else etc และทำให้กฎทางธุรกิจชัดเจนในลักษณะที่ไม่ทำให้คุณถูกบังคับให้ดำดิ่งลงไปในบรรทัดของโค้ดเพื่อให้ทราบว่าเกิดอะไรขึ้นหรือจะแก้ไขข้อบกพร่องบางอย่างได้อย่างไร อย่างไรก็ตามโครงการที่เราทำนั้นคล้ายกับที่คุณอธิบายไว้มากและเป็นโครงการขนาดกลาง คุณสามารถบอกได้จากคำพูดของฉันว่าฉันชอบมันและฉันขอแนะนำแม้ว่าจะมีความเสี่ยงอยู่บ้างเนื่องจากเป็นเทคโนโลยีใหม่และคุณต้องคิดแนวคิดใหม่ ๆ

2 เซ็นต์ของฉัน ...


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

ฉันคิดว่ามันเป็นสถานที่ที่พวกเขาต้องทำงานมากขึ้น ไม่ว่าในกรณีใดเราใช้ที่เก็บ "แฮชแท็กระดับโลก" ขนาดใหญ่ที่เราเพิ่มตัวแปรตามประเภท หลักการตั้งชื่อสำหรับตัวแปรเหล่านี้ประกอบด้วยทั้งประเภทชื่อและกิจกรรมหลักของตัวแปร สิ่งนี้ช่วยเราได้มากในการนำไปใช้งาน ฉันตระหนักดีว่าอาจมีวิธีที่ดีกว่าในการทำเช่นนี้ แต่วิธีนี้ใช้ได้ผลดีจริงๆและคุณสามารถใช้ประโยชน์ได้หลายวิธีเมื่อคุณออกแบบเวิร์กโฟลว์ ตัวอย่างเช่นกิจกรรม GerCustomer อาจมี input args จำนวนหนึ่งและ out args 2 อัน ได้แก่ GetCustomer.str_customerID และ GetCustomer.int_premium หวังว่านี่จะช่วยได้ ..
Derar

9

ฉันทำสามโครงการใน WF 3.5 และฉันต้องบอกว่ามันไม่ง่ายเลย มันบังคับให้คุณคิดในรูปแบบใหม่โดยเฉพาะอย่างยิ่งเมื่อใช้ความเพียร การอัปเดตแอปพลิเคชันที่มีเวิร์กโฟลว์ที่ยังไม่สมบูรณ์นับร้อยเป็นสิ่งที่ท้าทาย การเปลี่ยนแปลงครั้งเดียวในการทำให้เป็นอนุกรมทำให้เกิดปัญหาทั้งหมด การแนะนำไลบรารีเดียวกันหลายเวอร์ชันเพื่อรองรับเวิร์กโฟลว์ที่ทำงานใหม่และเก่าเป็นเรื่องปกติ มันท้าทายมาก

ฉันยังไม่ได้ลอง WF 4.0 แต่จากประสบการณ์จาก BizTalk และ WF 3.5 ฉันคิดว่ามันจะคล้ายกัน

อย่างไรก็ตามแนวทางที่ดีที่สุดที่คุณสามารถทำได้คือการทำ Proof-of-Concept ใช้ WF เดียวจากข้อกำหนดของคุณและพยายามรวมเข้าใน WF 4.0 คุณจะใช้เวลากับมันบ้าง แต่คุณจะพิสูจน์ได้ว่าคุณสามารถทำได้ใน WF 4.0 หรือไม่และมีประโยชน์ที่มองเห็นได้หรือไม่

หากคุณตัดสินใจใช้ WF 4.0 ฉันยืนยันว่าคุณตรวจสอบความเป็นไปได้ที่จะเรียกใช้ WF เป็นบริการ WCF ที่โฮสต์ใน Windows AppFabric AppFabric มีฟังก์ชันการทำงานนอกกรอบสำหรับโฮสต์ WF


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

2
ฉันลืมเรื่องการกำหนดเวอร์ชันไปแล้ว - เพียงอย่างเดียวอาจเป็นเหตุผลที่ดีพอที่จะไม่ใช้มัน
Kane

3
@ เคนนั่นไม่จำเป็นต้องเป็นความจริง คุณสามารถทำให้สถานะของคุณอยู่ภายนอกได้ตลอดเวลา ดังนั้นแทนที่จะ "deserializing เวิร์กโฟลว์แล้วกลับมาทำงานต่อ" คุณจะต้องสร้างอินสแตนซ์เวิร์กโฟลว์โดยแนบสถานะภายนอกจากนั้นเรียกใช้เวิร์กโฟลว์ สิ่งนี้สามารถขจัดความจำเป็นในการทำให้เป็นอนุกรมและเวิร์กโฟลว์เวอร์ชัน
VinayC

สวัสดี VinayC คุณมีตัวอย่างง่ายๆของสิ่งที่คุณพูดหรือไม่? "คุณจะสร้างอินสแตนซ์เวิร์กโฟลว์โดยแนบสถานะภายนอกแล้วเรียกใช้เวิร์กโฟลว์" ซึ่งฟังดูคล้ายกับสิ่งที่ฉันต้องการใช้ PoC แต่ฉันไม่รู้จริงๆว่า WF4 จะลองใช้เครื่องสถานะแบบนั้นได้ไหม
Jportelas

9

ฉันคิดว่าวันนี้ไม่สมเหตุสมผลที่จะพูดถึงเวิร์กโฟลว์ใน WF4 เป็นตัวเลือกเทคโนโลยีสำหรับปัญหาประเภทนี้ สิ่งที่เหมาะสมจริงๆตามที่ Ladislav Mrnka กล่าวไว้ข้างต้นคือ WCF WF Services ที่โฮสต์ใน AppFabric

ประสบการณ์ของฉันเกี่ยวกับเรื่องนี้คือการจ่ายเงินปันผลที่ดีและสนุกมาก แต่ปัญหาเกิดขึ้นในช่วงแรกเนื่องจากไม่ได้รับการชื่นชมอย่างถูกต้องว่าสำหรับโปรแกรมเมอร์หลายคนนี่เป็นการเปลี่ยนวิธีการมากกว่าการเปลี่ยนเทคโนโลยี ในทางกลับกันนักทั่วไปและผู้ที่มีความคิดในการแก้ปัญหามองว่า WCF WF AppFabric เป็นโอกาสที่น่าตื่นเต้น ดังนั้นหากการผสมผสานของผู้คนในโครงการค่อนข้างอนุรักษ์นิยม C # devs ที่ติดอยู่กับชุด OO และรูปแบบประจำวันของพวกเขาก็ยากที่จะแนะนำ หากทีมมีนวัตกรรมมากขึ้นการนำไปใช้ก็จะง่ายขึ้นมากเพราะโอกาสและประตูใหม่จะทวีคูณเมื่อค้นพบแต่ละครั้ง

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

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

แม้ว่าในด้านบวกผลลัพธ์สุดท้ายคือสิ่งที่ช่วยประหยัดเวลาได้มากและสร้างโอกาสมากมาย สิ่งสำคัญประการหนึ่งคือ worfklow หากมองเห็นได้ชัดเจนเป็นสิ่งที่ผู้ใช้ปลายทางนักพัฒนาและนักวิเคราะห์สามารถทำงานร่วมกันได้โดยขจัดขั้นตอนที่ไม่จำเป็นในวงจรชีวิตการพัฒนาและมุ่งเน้นไปที่ฝ่ายต่างๆในสิ่งประดิษฐ์เดียว นอกจากนี้ยังไม่สนับสนุนหมู่เกาะของฟังก์ชันการทำงานในแอปเฉพาะโดยมีชั้นกาวเฉพาะโดยการสนับสนุนชุดกระบวนการทางธุรกิจใน WF ต่อโดเมนธุรกิจ ยิ่งไปกว่านั้นด้วย AppFabric ระบบท่อประปาสำหรับการคงอยู่การบันทึกและการตื่นขึ้นมาตามกำหนดเวลานั้นทำได้เพื่อคุณ ประสิทธิภาพของ WF4 ก็โดดเด่นเช่นกัน

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


5

ในการทำระบบเคลมประกันที่มีความซับซ้อนซึ่งเกี่ยวข้องกับบทบาทและ "งานย่อย" คุณจำเป็นต้องมีโซลูชัน BPM ไม่ใช่เฉพาะเวิร์กโฟลว์ Workflow Foundation 4.0 นั้นลื่นไหล แต่จริงๆแล้วมันไม่ได้ใกล้เคียงกับฟังก์ชันการทำงานของผลิตภัณฑ์ BPM

โซลูชัน BPM เช่น Metastorm BPM, Global360 และ K2.NET ให้เวิร์กโฟลว์งานบทบาทและการรวมระบบที่มีมนุษย์เป็นศูนย์กลางซึ่งสามารถจำลองและปรับปรุงกระบวนการทางธุรกิจเช่นระบบการเคลมประกันของคุณ ใช้ ASP.NET เพื่อสร้างอินเทอร์เฟซที่รวมเข้ากับกลไกเวิร์กโฟลว์ BPM เนื่องจากนักออกแบบในตัวมักมีข้อ จำกัด และบังคับให้คุณใช้การควบคุมเว็บที่สร้างขึ้นเองซึ่งโดยปกติจะไม่ได้มีคุณลักษณะครบถ้วนเท่ากับการควบคุมเว็บ ASP.NET


แล้วการใช้ WF 4.0 กับกิจกรรมที่กำหนดเองล่ะ?
John Saunders

3
ฉันไม่เห็นด้วยอย่างเคารพ K2 เพิ่มเลเยอร์ของฟังก์ชันการทำงาน (เช่นการอนุญาตการล็อกและการรายงาน) ให้กับ WF แต่ทีมงานที่มีประสบการณ์สามารถพัฒนาคุณลักษณะเหล่านั้นได้ WF 4 นำจำนวนมากมาสู่โต๊ะ โซลูชัน BPM มักจะมีราคาแพงและเป็น "องค์กร"
TrueWill

4

ไปกับเทคโนโลยีที่ทีมของคุณรู้จักและรู้สึกสบายใจ Workflow Foundation ไม่ใช่ผลิตภัณฑ์ที่คุณสามารถใช้ได้ทันที แต่เป็นชุดของชิ้นส่วนที่คุณสามารถฝังลงในแอปพลิเคชันของคุณเพื่อสร้างระบบเวิร์กโฟลว์ IMHO ตรรกะของเวิร์กโฟลว์เป็นเทคโนโลยีที่สำคัญน้อยที่สุดก่อนอื่นคุณต้องให้ความสำคัญกับ GUI เพราะเจ้าของธุรกิจจะไม่เห็นอะไรเลยนอกจาก GUI แต่ถ้าระบบของคุณประสบความสำเร็จคุณจะต้องเตรียมพร้อมสำหรับการร้องขอการเปลี่ยนแปลงที่ไม่สิ้นสุดและข้อกำหนดใหม่ ๆ ดังนั้นคุณต้องใช้ตรรกะทางธุรกิจของคุณเพื่อให้ง่ายต่อการเปลี่ยนแปลงและง่ายต่อการแบ่งออกเป็นกระบวนการแยกกันเพื่อให้เหมาะกับความต้องการของผู้ใช้ที่แตกต่างกัน (บางครั้งก็ขัดแย้งกัน) . BPM ช่วยในงานนี้เพราะช่วยให้คุณมีกระบวนการทางธุรกิจที่แยกจากกันหลายเวอร์ชันเพื่อตอบสนองความต้องการทางธุรกิจที่หลากหลาย คุณไม่ ' ไม่จำเป็นต้องมีเอ็นจิ้น BPM เต็มรูปแบบสำหรับสิ่งนั้น แต่จะมีประโยชน์ในการเขียนโค้ดตรรกะทางธุรกิจของคุณเพื่อให้สามารถกำหนดเวอร์ชันและแบ่งออกเป็นกระบวนการทางธุรกิจของแต่ละบุคคลได้สิ่งที่แย่ที่สุดที่ต้องมีคือโค้ดที่ไม่สามารถแก้ไขได้และเชื่อมโยงกันซึ่งจัดการกับ 'ทุกอย่าง' และไม่มี ใคร ๆ ก็เข้าใจ มีแนวคิดมากมายสำหรับเครื่องสถานะ DSL (ภาษาเฉพาะโดเมน) สคริปต์และอื่น ๆ - คุณเป็นผู้ตัดสินใจว่าจะใช้งานอะไร แต่คุณควรคิดในแง่ของกระบวนการทางธุรกิจและจัดระเบียบตรรกะของคุณให้สอดคล้องกันเพื่อให้สะท้อนถึงกระบวนการเหล่านี้ และเตรียมพร้อมสำหรับการอยู่ร่วมกันของตรรกะทางธุรกิจและโครงสร้างข้อมูลที่หลากหลาย - นี่คืองานออกแบบที่ยากที่สุด imho มีประโยชน์ในการเขียนโค้ดตรรกะทางธุรกิจของคุณเพื่อให้สามารถกำหนดเวอร์ชันและแบ่งออกเป็นกระบวนการทางธุรกิจแต่ละขั้นตอนได้สิ่งที่แย่ที่สุดคือโค้ดที่ไม่สามารถแก้ไขได้และเชื่อมโยงกันซึ่งจัดการกับ 'ทุกอย่าง' และไม่มีใครเข้าใจได้ มีแนวคิดมากมายสำหรับเครื่องสถานะ DSL (ภาษาเฉพาะโดเมน) สคริปต์และอื่น ๆ - คุณเป็นผู้ตัดสินใจว่าจะใช้งานอะไร แต่คุณควรคิดในแง่ของกระบวนการทางธุรกิจและจัดระเบียบตรรกะของคุณให้สอดคล้องกันเพื่อให้สะท้อนถึงกระบวนการเหล่านี้ และเตรียมพร้อมสำหรับการอยู่ร่วมกันของตรรกะทางธุรกิจและโครงสร้างข้อมูลที่หลากหลาย - นี่คืองานออกแบบที่ยากที่สุด imho มีประโยชน์ในการเขียนโค้ดตรรกะทางธุรกิจของคุณเพื่อให้สามารถกำหนดเวอร์ชันและแบ่งออกเป็นกระบวนการทางธุรกิจแต่ละขั้นตอนได้สิ่งที่แย่ที่สุดคือโค้ดที่ไม่สามารถแก้ไขได้และเชื่อมโยงกันซึ่งจัดการกับ 'ทุกอย่าง' และไม่มีใครเข้าใจได้ มีแนวคิดมากมายสำหรับเครื่องสถานะ DSL (ภาษาเฉพาะโดเมน) สคริปต์และอื่น ๆ - คุณเป็นผู้ตัดสินใจว่าจะใช้งานอะไร แต่คุณควรคิดในแง่ของกระบวนการทางธุรกิจและจัดระเบียบตรรกะของคุณให้สอดคล้องกันเพื่อให้สะท้อนถึงกระบวนการเหล่านี้ และเตรียมพร้อมสำหรับการอยู่ร่วมกันของตรรกะทางธุรกิจและโครงสร้างข้อมูลที่หลากหลาย - นี่คืองานออกแบบที่ยากที่สุด imho DSL (ภาษาเฉพาะโดเมน) สคริปต์และอื่น ๆ - คุณเป็นผู้ตัดสินใจว่าควรใช้อะไร แต่คุณควรคิดในแง่ของกระบวนการทางธุรกิจและจัดระเบียบตรรกะของคุณให้สอดคล้องกันเพื่อให้สะท้อนถึงกระบวนการเหล่านี้ และเตรียมพร้อมสำหรับการอยู่ร่วมกันของตรรกะทางธุรกิจและโครงสร้างข้อมูลที่หลากหลาย - นี่คืองานออกแบบที่ยากที่สุด imho DSL (ภาษาเฉพาะโดเมน) สคริปต์และอื่น ๆ - คุณเป็นผู้ตัดสินใจว่าควรใช้อะไร แต่คุณควรคิดในแง่ของกระบวนการทางธุรกิจและจัดระเบียบตรรกะของคุณให้สอดคล้องกันเพื่อให้สะท้อนถึงกระบวนการเหล่านี้ และเตรียมพร้อมสำหรับการอยู่ร่วมกันของตรรกะทางธุรกิจและโครงสร้างข้อมูลที่หลากหลาย - นี่คืองานออกแบบที่ยากที่สุด imho


3

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

สิ่งสำคัญอย่างหนึ่งที่ฉันมีปัญหากับ WF 4.0 คือความคิดเห็นของ Maurice:

ขั้นพื้นฐานคืออย่าเปลี่ยนขั้นตอนการทำงานที่มีอยู่สร้างใหม่เสมอ

เยี่ยมมากถ้าคุณต้องการเวอร์ชันใหม่ แต่จะเป็นอย่างไรถ้าคุณมีเวิร์กโฟลว์ที่ยังคงมีอยู่ 50,000 เวิร์กโฟลว์และตระหนักว่าในบางจุดมีข้อบกพร่องในเวิร์กโฟลว์? คุณต้องสามารถอัปเดต xamlx และยังคงเชื่อมต่อกับอินสแตนซ์ที่มีอยู่ ฉันได้ลองคลายการบีบอัดคอลัมน์ข้อมูลเมตาต่างๆในตารางอินสแตนซ์ SQL Server เพื่อค้นหาสิ่งที่เชื่อมโยงอินสแตนซ์กับข้อกำหนดเวิร์กโฟลว์โดยไม่ต้องใช้โชค

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

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

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

ฉันไม่เข้าใจจริงๆว่าเกิดอะไรขึ้นกับหัวหน้าทีม WF dev เพื่อปล่อยระบบที่คุณไม่สามารถแก้ไขข้อบกพร่องได้อย่างง่ายดาย พวกเขาควรได้พัฒนาเทคนิคสำหรับการรวมอินสแตนซ์ใหม่กับ xamlx ใหม่

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