ใช้กรณีของ Workflow Engine


90

ฉันต้องการทราบเกี่ยวกับปัญหาเฉพาะที่คุณ - ผู้อ่าน SO - ได้แก้ไขโดยใช้ Workflow Engines และไลบรารี / เฟรมเวิร์กที่คุณใช้หากคุณไม่ได้ม้วนเอง ฉันต้องการทราบด้วยว่าเมื่อใดที่ Workflow Engine ไม่ใช่ตัวเลือกที่ดีที่สุดและถ้าคุณเลือกสิ่งที่ง่ายกว่านั้นเช่นแอปพลิเคชันประเภท TaskList / WorkList / Task-Management โดยใช้เครื่องของรัฐ

คำถาม:

  • คุณใช้กลไกเวิร์กโฟลว์ในการแก้ปัญหาอะไรบ้าง?
  • คุณใช้ไลบรารี / เฟรมเวิร์กอะไร
  • เมื่อใดที่ State Machine / Task Management ที่ง่ายกว่าเช่นระบบก็เพียงพอแล้ว?
  • โบนัส: คุณสร้างความแตกต่างระหว่างTask ManagementและWorkflow Engine ได้อย่างไร?

ฉันกำลังมองหาประสบการณ์โดยตรง

แหล่งข้อมูลบางส่วนที่ฉันได้ตรวจสอบ:

คำตอบ:


61

ฉันลำเอียงเช่นกันที่ผมเป็นผู้เขียนหลักของStonePath

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

ที่กล่าวว่าฉันชอบ Ruote มาก - ฉันติดตามโครงการนั้นมาระยะหนึ่งแล้วและฉันควรจะต้องการวิธีแก้ปัญหาแบบนั้นมันจะเป็นเครื่องมือต่อไปที่ฉันยินดีจะลอง StonePath มีจุดประสงค์ที่แตกต่างไปจาก ruote โดยที่ Ruote มีประโยชน์กับ Ruby โดยทั่วไป StonePath มุ่งเป้าไปที่ Rails ซึ่งเป็นเว็บเฟรมเวิร์กที่เขียนด้วย Ruby ในกรณีที่ Ruote เกี่ยวกับกระบวนการทางธุรกิจที่ยาวนานและคำจำกัดความที่เกี่ยวข้อง StonePath เป็นเรื่องเกี่ยวกับการจัดการเวิร์กโฟลว์และการมอบหมายงานตามรัฐ ตรงไปตรงมาฉันคิดว่าความแตกต่างจากภายนอกที่มองเข้ามาอาจมีความละเอียดอ่อน - หลายครั้งที่กระบวนการทางธุรกิจประเภทเดียวกันสามารถแสดงได้ทั้งทางใดทางหนึ่ง - แบบจำลองของรัฐและตามงานมีแนวโน้มที่จะจับคู่กับแบบจำลองจิตใจของฉัน

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

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

โพรงกระต่ายสามารถลึกลงไปได้มากกว่านี้และฉันเขียนบทความเกี่ยวกับเรื่องนี้สำหรับฉบับที่ 4 ของ PragPub นิตยสาร Pragmatic Programmer ตรวจสอบลิงก์ reo ด้านบนเพื่อดู PDF ที่อัปเดตของบทความนั้น

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


2
สุดยอด! หวังเป็นอย่างยิ่งที่จะได้เรียนรู้เพิ่มเติมเกี่ยวกับความแตกต่างที่ลึกซึ้งระหว่างเครื่องยนต์เวิร์กโฟลว์เช่น ruote และ state / task engine เช่น stonepath เนื่องจากไม่เคยผ่านมาก่อนจึงยากที่จะดูว่าจะเริ่มต้นด้วยอะไร ฉันได้อ่านทุกสิ่งที่ฉันสามารถหาได้เกี่ยวกับทางเดินหินและซากปรักหักพังและเอกสารสีขาวอื่น ๆ อีกนับล้านฉบับเกี่ยวกับ BPM และเวิร์กโฟลว์ดังนั้นความรู้ที่คล้ายกับ "ประสบการณ์โดยตรง" เช่นนี้จะช่วยลดเส้นโค้งการเริ่มต้น ขอบคุณอีกครั้ง.
Lance Pollard

@bokmann ทำไมไม่บันทึกสถานะในคอลัมน์เดียวของตาราง ??
AminM

31

ฉันลำเอียงผมเป็นหนึ่งในผู้เขียนของRuote

ตัวแปร 1) เครื่องสถานะที่แนบมากับทรัพยากร (เอกสารคำสั่งใบแจ้งหนี้หนังสือชิ้นส่วนเฟอร์นิเจอร์)

ตัวแปร 2) เครื่องสถานะที่แนบกับทรัพยากรเสมือนชื่องาน

ตัวแปร 3) กลไกเวิร์กโฟลว์ตีความนิยามเวิร์กโฟลว์

ตอนนี้คำถามของคุณติดแท็ก "BPM" เราสามารถขยายเป็น "การจัดการกระบวนการทางธุรกิจ" ได้ การจัดการแบบนั้นเกิดขึ้นได้อย่างไรในแต่ละตัวแปร

ในรูปแบบที่ 1 กระบวนการทางธุรกิจ (หรือเวิร์กโฟลว์) จะกระจัดกระจายอยู่ในแอปพลิเคชัน เครื่องสถานะที่แนบมากับทรัพยากรบังคับใช้บางแง่มุมของเวิร์กโฟลว์ แต่เฉพาะที่เกี่ยวข้องกับทรัพยากร อาจมีทรัพยากรอื่น ๆ ที่มีเครื่องของรัฐของตนเองตามกระบวนการทางธุรกิจเดียวกัน

ในตัวแปร 2 เวิร์กโฟลว์สามารถกระจุกตัวอยู่รอบ ๆ ทรัพยากรงานและแสดงโดยเครื่องสถานะรอบทรัพยากรนั้น

ในตัวแปร 3 เวิร์กโฟลว์จะถูกบังคับใช้โดยการตีความทรัพยากรที่เรียกว่าข้อกำหนดเวิร์กโฟลว์ (หรือนิยามกระบวนการทางธุรกิจ)

จะเกิดอะไรขึ้นเมื่อกระบวนการทางธุรกิจเปลี่ยนไป? การมีเครื่องมือเวิร์กโฟลว์ที่คุ้มค่าหรือไม่ที่กระบวนการทางธุรกิจเป็นทรัพยากรที่สามารถจัดการได้

ไลบรารีเครื่องของรัฐส่วนใหญ่มี 1 ชุดสถานะ + การเปลี่ยน เวิร์กโฟลว์เอ็นจิ้นส่วนใหญ่เป็นตัวแปลความหมายของเวิร์กโฟลว์และอนุญาตให้เวิร์กโฟลว์ต่างๆทำงานร่วมกัน

ค่าใช้จ่ายในการเปลี่ยนขั้นตอนการทำงานคืออะไร?

สายพันธุ์นี้ไม่สามารถใช้ร่วมกันได้ ฉันได้เห็นตัวอย่างมากมายที่กลไกของเวิร์กโฟลว์เปลี่ยนสถานะของทรัพยากรหลายอย่างซึ่งบางส่วนได้รับการปกป้องโดยเครื่องของรัฐ

ฉันยังใช้ตัวแปร 3 + 2 มากสำหรับงานของมนุษย์: กลไกเวิร์กโฟลว์ในบางจุดเมื่อเรียกใช้อินสแตนซ์ของกระบวนการส่งมอบงาน (รายการงาน) ให้กับผู้เข้าร่วมที่เป็นมนุษย์ (งานทรัพยากรถูกสร้างขึ้นและอยู่ในสถานะ 'พร้อม') .

คุณสามารถไปได้ไกลด้วยตัวแปร 2 เพียงอย่างเดียว (ตัวแปรตัวจัดการงาน)

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

คุณสามารถถามคำถามมากมาย แต่ถ้าคุณไม่ใช้เวลาในการอ่านคำตอบและไม่ใช้เวลาในการทดลองและทดสอบคุณจะไม่ไปไกลมากและจะไม่ได้รับไหวพริบใด ๆ เมื่อจะใช้ นี่หรือเครื่องมือนั้น


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

ลิงค์ดูเหมือนจะตาย?
rogerdpack

ตอนนี้โครงการได้ตายไปแล้ว
Jeshan Babooa

4

ในโครงการก่อนหน้านี้ฉันกำลังดำเนินการอยู่ฉันได้เพิ่มกฎประเภทเวิร์กโฟลว์ลงในชุดของแบบฟอร์มรัฐบาลในอุตสาหกรรม Healhcare

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

กระแสตัวอย่าง:

ผู้ป่วยที่เข้ารับการรักษา -> กำหนดการประเมินเบื้องต้น FOrm -> กำหนดเวลาแบบฟอร์มการทบทวนรายไตรมาส -> ผู้ป่วยเสียชีวิต -> ยกเลิกการทบทวน -> แบบประเมินการปล่อยกำหนดการ

กฎอื่น ๆ อีกมากมายขึ้นอยู่กับสิ่งต่างๆเช่นอายุของผู้ป่วยที่เข้ารับการรักษาเป็นต้น

นี่คือแอป ASP.NET โดยทั่วไปแล้วกฎจะเป็นตารางในฐานข้อมูล ฉันเพิ่มการเขียนสคริปต์ดังนั้นสคริปต์จะทำงานบนการกรอกแบบฟอร์มเพื่อกำหนดสิ่งที่ต้องทำต่อไป นี่เป็นการออกแบบที่น่าสยดสยองและเหมาะอย่างยิ่งสำหรับเครื่องยนต์เวิร์กโฟลว์ที่เหมาะสม


3

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

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

  • งาน CRON แบบกระจาย
  • การจัดการ ML / Data pipelines
  • การตอบสนองต่อเหตุการณ์ทางธุรกิจ ตัวอย่างเช่นกิจกรรมการเดินทางที่ Uber เวิร์กโฟลว์สามารถสะสมสถานะตามเหตุการณ์ที่ได้รับและดำเนินกิจกรรมเมื่อจำเป็น
  • การปรับใช้บริการกับ Mesos / Kubernetes
  • การใช้งาน CI Pipeline
  • ตรวจสอบให้แน่ใจว่าการเรียกใช้บริการหลายสายเสร็จสมบูรณ์เมื่อได้รับคำขอ รวมทั้งSAGAการใช้รูปแบบ
  • การจัดการงานของพนักงานที่เป็นมนุษย์ (คล้ายกับ Amazon MTurk )
  • การประมวลผลสื่อ
  • การกำหนดเส้นทางตั๋วฝ่ายสนับสนุนลูกค้า
  • การประมวลผลคำสั่งซื้อ
  • บริการทดสอบที่คล้ายกับChaosMonkey

และอื่น ๆ อีกมากมาย

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

คุณใช้ไลบรารี / เฟรมเวิร์กอะไร

Cadence เป็นบริการในตัวที่เขียนด้วยGo with GoและJavaไลบรารีฝั่งไคลเอ็นต์การพึ่งพาภายนอกเพียงอย่างเดียวคือที่เก็บข้อมูล รองรับฐานข้อมูล Cassandra และ SQL

Cadence ยังรองรับการจำลองแบบข้ามภูมิภาคแบบอะซิงโครนัส (โดยใช้คำศัพท์ AWS)

เมื่อใดที่ State Machine / Task Management ที่ง่ายกว่าเช่นระบบก็เพียงพอแล้ว?

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



2

ผมเป็นหนึ่งในผู้เขียนของImixs-Workflow Imixs-Workflow เป็นเครื่องมือเวิร์กโฟลว์โอเพ่นซอร์สที่ใช้ BPMN 2.0 และรวมเข้ากับสแต็คเทคโนโลยี Java EE อย่างสมบูรณ์
ฉันพัฒนาเครื่องยนต์เวิร์กโฟลว์ด้วยตัวเองมากว่า 10 ปี ฉันจะพยายามตอบคำถามของคุณสั้น ๆ :

> คุณใช้กลไกเวิร์กโฟลว์ในการแก้ปัญหาอะไรบ้าง

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

  • ส่งการแจ้งเตือน
  • ดูงานที่เปิดอยู่
  • มอบหมายงานให้กับบุคคล
  • อธิบายงานปัจจุบัน

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

> คุณใช้ไลบรารี / เฟรมเวิร์กอะไร

5 ปีที่แล้วเราได้เริ่มนำ Imixs-Workflow engine มาใช้ใหม่โดยเน้นที่BPMN 2.02.0 BPMN เป็นมาตรฐานทั่วไปสำหรับการสร้างแบบจำลองกระบวนการ และสิ่งที่น่าประหลาดใจสำหรับฉันคือจู่ๆเราก็สามารถอธิบายถึงกระบวนการทางธุรกิจที่ซับซ้อนสูงซึ่งสามารถมองเห็นและดำเนินการได้ ฉันแนะนำให้ทุกคนใช้ BPMN ในการสร้างแบบจำลองกระบวนการทางธุรกิจ

> เมื่อใดที่ State Machine / Task Management ที่ง่ายกว่าเช่นระบบก็เพียงพอแล้ว?

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

> โบนัส: คุณสร้างความแตกต่างระหว่าง Task Management และ Workflow Engine ได้อย่างไร?

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


1

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


1

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

อาจมีหลายพันกระบวนการทำงานในแต่ละครั้งและโดยรวมแล้วหมื่นหรือต่ำหลายแสนกระบวนการต่อวัน

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

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

ความท้าทายหลักคือการจัดลำดับความสำคัญของการดำเนินการงานการล็อกฐานข้อมูลการพยายามดำเนินการเพื่อตั้งชื่อไม่กี่อย่างที่เกี่ยวข้องกับ BPM เอง ดังนั้นเราจึงต้องพัฒนาการจัดการสิ่งเหล่านี้แบบกำหนดเองตัวอย่างเช่น:

  • การจัดการการลองใหม่ใน BPM สำหรับกรณีที่โหนดไม่มีผู้ปฏิบัติงานว่างสำหรับงานที่กำหนดหรือเมื่อโหนดไม่ทำงานเลย
  • การดำเนินงานการถ่ายโอนแบบขนานในกระบวนการเดียวและการซิงโครไนซ์ผลลัพธ์ (สำเร็จ / ล้มเหลว)

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

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