OpenWorkflow - แพลตฟอร์มโอเพนซอร์สสำหรับการทำงานอัตโนมัติและรันเวิร์กโฟลว์ที่ขับเคลื่อนด้วย Postgres เพียงตัวเดียว
(github.com/openworkflowdev)- "เฟรมเวิร์กเวิร์กโฟลว์แบบ durable และ resumable ที่เขียนด้วย TypeScript"
- มี workflow engine สำหรับ เชื่อมต่อบริการและ API ที่หลากหลาย เพื่อทำให้งานที่มีลำดับซับซ้อนเป็นอัตโนมัติ
- เป็น แพลตฟอร์มโอเพนซอร์สแบบโมดูลาร์ ที่พัฒนาขึ้นเพื่อแก้ปัญหา workflow automation และ integration
- แม้เซิร์ฟเวอร์จะล่มหรือมีการ deploy ก็สามารถบันทึกสถานะไว้ใน Postgres และกลับมาทำงานต่อได้อย่างแม่นยำตั้งแต่สเต็ปล่าสุด
- แต่ละ
step.run({ name }, fn)จะ ถูกรันเพียงครั้งเดียวและผลลัพธ์ถูก memoize ดังนั้นเมื่อรีสตาร์ตหลังเกิด crash จะไม่รัน side effect ซ้ำ เช่น การตัดบัตรหรือการส่งอีเมล แต่จะนำผลลัพธ์ที่แคชไว้กลับมาใช้ - ไม่ต้องมีเซิร์ฟเวอร์เฉพาะแยกต่างหาก โดยใช้โครงสร้างที่ worker process (
ow.newWorker({ concurrency })) คอย polling pending run จาก DB แล้วนำมารัน จึงสามารถเปิดหลาย worker เพื่อรองรับ high availability และ scale-out ได้ และ long sleep อย่างstep.sleep("id", "1h")ก็ไม่กินช่องของ worker - ออกแบบมาให้จัดการ การนิยามแบบ type-safe, การจัดการเวอร์ชัน, การดูผลลัพธ์ และการยกเลิก ได้ทั้งหมดในระดับโค้ด ผ่าน workflow input/output generics, ฟิลด์เวอร์ชัน (
version: "v2"),run().result(),handle.cancel()เป็นต้น - รองรับการขยายและการปรับแต่งให้เข้ากับระบบภายนอกผ่าน plugin architecture
- รองรับการเชื่อมต่อกับ SaaS และเครื่องมือพัฒนาหลัก เช่น OpenAI, Slack, GitHub, Notion
- ขณะนี้โฟกัสที่ PostgreSQL backend และความสามารถรันไทม์พื้นฐาน (concurrency, retry, parallel step, sleep, versioning, cancel)
- หลังจากนี้มี CLI, dashboard, idempotency key, rollback/compensation functions, signals, OpenTelemetry, Redis/SQLite backend, Go/Python SDK อยู่ในโรดแมป
2 ความคิดเห็น
เมื่อไม่นานมานี้มีโพสต์นี้ขึ้นมาอยู่เหมือนกัน GitHub - earendil-works/absurd: An experiment in durability https://share.google/PCjaLh3j46ayECI9b ... ดูเหมือนจะเป็นโปรเจ็กต์แนวคอนเซปต์เดียวกัน แต่หายไปไหนแล้วนะ...
ให้ความรู้สึกคล้ายกับ spring batch เลยครับ