เอกสารนี้แปลโดย AI สำหรับข้อมูลที่ถูกต้อง กรุณาดูเวอร์ชันภาษาอังกฤษ
ระบบบริบท (Context) ของ NocoBase Flow Engine แบ่งออกเป็น 3 ชั้น ซึ่งสอดคล้องกับขอบเขตการทำงานที่แตกต่างกัน การใช้งานอย่างเหมาะสมจะช่วยให้สามารถแชร์และแยกส่วนบริการ, การตั้งค่า และข้อมูลได้อย่างยืดหยุ่น ช่วยเพิ่มความสามารถในการบำรุงรักษาและขยายระบบของธุรกิจได้ครับ
mode: 'runtime' | 'settings' สองรูปแบบ ซึ่งสอดคล้องกับสถานะการรัน (Runtime) และสถานะการตั้งค่า (Settings) ตามลำดับFlowEngineContext (บริบทส่วนกลาง), FlowModelContext (บริบทโมเดล) และ FlowRuntimeContext (บริบทขณะรันไทม์ของเวิร์กโฟลว์) ทั้งหมดนี้ล้วนเป็นคลาสย่อยหรืออินสแตนซ์ของ FlowContext ครับ
FlowModelContext สามารถเข้าถึงคุณสมบัติและเมธอดของ FlowEngineContext ได้ผ่านกลไกตัวแทน (Delegate) เพื่อให้บรรลุการแชร์ความสามารถระดับส่วนกลางFlowModelContext ของโมเดลย่อยสามารถเข้าถึงบริบทของโมเดลหลัก (ความสัมพันธ์แบบซิงโครนัส) ได้ผ่านกลไกตัวแทน (Delegate) และรองรับการเขียนทับด้วยชื่อเดียวกันFlowRuntimeContext จะเข้าถึง FlowModelContext ที่เกี่ยวข้องผ่านกลไกตัวแทน (Delegate) เสมอ แต่จะไม่ส่งข้อมูลกลับขึ้นไปด้านบนFlowRuntimeContext รองรับสองโหมด โดยแยกความแตกต่างด้วยพารามิเตอร์ mode ดังนี้ครับ:
mode: 'runtime' (สถานะการรัน): ใช้ในขั้นตอนการรันเวิร์กโฟลว์จริง คุณสมบัติและเมธอดจะคืนค่าข้อมูลจริง ตัวอย่างเช่น:
mode: 'settings' (สถานะการตั้งค่า): ใช้ในขั้นตอนการออกแบบและตั้งค่าเวิร์กโฟลว์ การเข้าถึงคุณสมบัติจะคืนค่าเป็นสตริงเทมเพลตตัวแปร เพื่อความสะดวกในการเลือกนิพจน์และตัวแปร ตัวอย่างเช่น:
การออกแบบสองโหมดนี้ช่วยรับประกันความพร้อมใช้งานของข้อมูลในขณะรันไทม์ และอำนวยความสะดวกในการอ้างอิงตัวแปรและการสร้างนิพจน์ในขณะตั้งค่า ช่วยเพิ่มความยืดหยุ่นและใช้งานง่ายให้กับ Flow Engine ครับ
ในบางสถานการณ์ (เช่น การแก้ไขโค้ด RunJS ของ JS*Model, AI coding) จำเป็นต้องให้ "ผู้เรียก" เข้าใจข้อมูลต่อไปนี้โดยไม่ต้องรันโค้ด:
ctx ปัจจุบันมี ความสามารถแบบสแตติก อะไรบ้าง (เอกสาร API, พารามิเตอร์, ตัวอย่าง, ลิงก์เอกสาร เป็นต้น)await ctx.getApiInfos(options?) (ข้อมูล API แบบสแตติก)await ctx.getVarInfos(options?) (ข้อมูลโครงสร้างตัวแปร)defineProperty(...).meta (รวมถึง meta factory)path และการควบคุมความลึกด้วย maxDepthพารามิเตอร์ที่ใช้บ่อย:
maxDepth: ระดับการขยายสูงสุด (ค่าเริ่มต้นคือ 3)path: string | string[]: การตัดข้อมูล โดยจะแสดงเฉพาะทรีที่อยู่ภายใต้เส้นทางที่ระบุawait ctx.getEnvInfos() (สแนปชอตสภาพแวดล้อมขณะรันไทม์)โครงสร้างโหนด (แบบย่อ):