MuleSoft - Flow Control และ Transformers
การควบคุมการไหล (เราเตอร์)
งานหลักขององค์ประกอบ Flow Control คือการรับเหตุการณ์ Mule อินพุตและกำหนดเส้นทางไปยังลำดับส่วนประกอบที่แยกจากกัน โดยทั่วไปเป็นการกำหนดเส้นทางเหตุการณ์ Mule อินพุตไปยังลำดับอื่น ๆ ของส่วนประกอบ ดังนั้นจึงเรียกอีกอย่างว่าเราเตอร์ เราเตอร์ Choice และ Scatter-Gather เป็นเราเตอร์ที่ใช้มากที่สุดภายใต้ส่วนประกอบ Flow Control
เราเตอร์ตัวเลือก
ตามชื่อที่แนะนำเราเตอร์นี้ใช้ตรรกะ DataWeave เพื่อเลือกหนึ่งในสองเส้นทางขึ้นไป ตามที่กล่าวไว้ก่อนหน้านี้แต่ละเส้นทางเป็นลำดับแยกกันของตัวประมวลผลเหตุการณ์ล่อ เราสามารถกำหนดเราเตอร์ตัวเลือกเป็นเราเตอร์ที่กำหนดเส้นทางข้อความผ่านโฟลว์แบบไดนามิกตามชุดนิพจน์ DataWeave ที่ใช้ประเมินเนื้อหาข้อความ
แผนผังของ Choice Router
ผลของการใช้เราเตอร์ Choice ก็เหมือนกับการเพิ่มการประมวลผลแบบมีเงื่อนไขลงในโฟลว์หรือไฟล์ if/then/elseบล็อกรหัสในภาษาโปรแกรมส่วนใหญ่ ต่อไปนี้เป็นแผนผังของ Choice Router ซึ่งมีสามตัวเลือก หนึ่งในนั้นคือเราเตอร์เริ่มต้น
Scatter-Gather Router
ตัวประมวลผลเหตุการณ์การกำหนดเส้นทางที่ใช้มากที่สุดอีกตัวหนึ่งคือ Scatter-Gather component. ตามความหมายของชื่อมันทำงานบนพื้นฐานของ scatters (สำเนา) และ Gather (Consolidates) เราสามารถเข้าใจว่ามันทำงานได้ด้วยความช่วยเหลือของสองประเด็นต่อไปนี้ -
ขั้นแรกเราเตอร์นี้จะคัดลอก (Scatter) เหตุการณ์ล่อไปยังเส้นทางขนานสองเส้นทางขึ้นไป เงื่อนไขคือแต่ละเส้นทางต้องเป็นลำดับของตัวประมวลผลเหตุการณ์ตั้งแต่หนึ่งตัวขึ้นไปซึ่งเปรียบเสมือนโฟลว์ย่อย แต่ละเส้นทางในกรณีนี้จะสร้างเหตุการณ์ Mule โดยใช้เธรดแยกกัน ทุกเหตุการณ์ Mule จะมี payload แอตทริบิวต์และตัวแปรของตัวเอง
จากนั้นเราเตอร์นี้จะรวบรวมเหตุการณ์ Mule ที่สร้างขึ้นจากแต่ละเส้นทางจากนั้นรวมเข้าด้วยกันเป็นเหตุการณ์ Mule ใหม่ หลังจากนี้จะส่งเหตุการณ์ Mule ที่รวมไว้นี้ไปยังตัวประมวลผลเหตุการณ์ถัดไป เงื่อนไขคือเราเตอร์ SG จะส่งเหตุการณ์ Mule รวมไปยังตัวประมวลผลเหตุการณ์ถัดไปก็ต่อเมื่อทุกเส้นทางเสร็จสมบูรณ์
แผนผังของ Scatter-Gather Router
ต่อไปนี้เป็นแผนผังของ Scatter-Gather Router ที่มีตัวประมวลผลเหตุการณ์สี่ตัว มันดำเนินการทุกเส้นทางแบบขนานและไม่เรียงตามลำดับ
การจัดการข้อผิดพลาดโดย Scatter-Gather Router
อันดับแรกเราต้องมีความรู้เกี่ยวกับประเภทของข้อผิดพลาดที่สามารถสร้างขึ้นภายในองค์ประกอบ Scatter-Gather ข้อผิดพลาดใด ๆ อาจถูกสร้างขึ้นภายในตัวประมวลผลเหตุการณ์ที่ทำให้ส่วนประกอบ Scatter-Gather แสดงข้อผิดพลาดประเภทMule: COMPOSITE_ERROR. ข้อผิดพลาดนี้จะถูกส่งโดยส่วนประกอบ SG หลังจากที่ทุกเส้นทางล้มเหลวหรือเสร็จสิ้น
ในการจัดการข้อผิดพลาดประเภทนี้ a try scopeสามารถใช้ได้ในแต่ละเส้นทางของส่วนประกอบ Scatter-Gather หากข้อผิดพลาดถูกจัดการโดยtry scopeจากนั้นเส้นทางจะสามารถสร้างเหตุการณ์ล่อได้อย่างแน่นอน
หม้อแปลงไฟฟ้า
สมมติว่าเราต้องการตั้งค่าหรือลบส่วนหนึ่งของเหตุการณ์ Mule ใด ๆ ส่วนประกอบ Transformer เป็นตัวเลือกที่ดีที่สุด ส่วนประกอบหม้อแปลงมีประเภทต่อไปนี้ -
ถอดหม้อแปลงตัวแปร
ตามความหมายของชื่อคอมโพเนนต์นี้รับชื่อตัวแปรและลบตัวแปรนั้นออกจากเหตุการณ์ Mule
การกำหนดค่าการถอดหม้อแปลงตัวแปร
ตารางด้านล่างแสดงชื่อของเขตข้อมูลและคำอธิบายที่จะพิจารณาในขณะกำหนดค่าการถอดหม้อแปลงตัวแปร -
ซีเนียร์ No | ฟิลด์และคำอธิบาย |
---|---|
1 | Display Name (doc:name) เราสามารถปรับแต่งค่านี้เพื่อแสดงชื่อเฉพาะสำหรับส่วนประกอบนี้ในขั้นตอนการทำงานของ Mule |
2 | Name (variableName) แสดงถึงชื่อของตัวแปรที่ต้องการลบ |
ตั้งหม้อแปลงน้ำหนักบรรทุก
ด้วยความช่วยเหลือของ set-payloadเราสามารถอัปเดตเพย์โหลดซึ่งอาจเป็นสตริงตัวอักษรหรือนิพจน์ DataWeave ของข้อความ ไม่แนะนำให้ใช้ส่วนประกอบนี้สำหรับนิพจน์หรือการแปลงที่ซับซ้อน สามารถใช้สำหรับคนง่ายๆเช่นselections.
ตารางด้านล่างแสดงชื่อของเขตข้อมูลและคำอธิบายที่จะพิจารณาในขณะกำหนดค่าหม้อแปลงน้ำหนักบรรทุกชุด -
ฟิลด์ | การใช้งาน | คำอธิบาย |
---|---|---|
มูลค่า (มูลค่า) | บังคับ | ค่าที่ยื่นเป็นสิ่งจำเป็นสำหรับการตั้งค่าน้ำหนักบรรทุก จะยอมรับสตริงตัวอักษรหรือนิพจน์ DataWeave ซึ่งกำหนดวิธีการตั้งค่าเพย์โหลด ตัวอย่างเช่น "สตริงบาง" |
ประเภทละครใบ้ (mimeType) | ไม่จำเป็น | เป็นทางเลือก แต่แสดงถึงประเภท mime ของค่าที่กำหนดให้กับ payload ของข้อความ ตัวอย่างเช่นข้อความ / ธรรมดา |
การเข้ารหัส (การเข้ารหัส) | ไม่จำเป็น | นอกจากนี้ยังเป็นทางเลือก แต่แสดงถึงการเข้ารหัสของค่าที่กำหนดให้กับส่วนข้อมูลของข้อความ ตัวอย่างเช่น UTF-8 |
เราสามารถตั้งค่า payload ผ่านโค้ดการกำหนดค่า XML -
With Static Content - โค้ดคอนฟิกูเรชัน XML ต่อไปนี้จะตั้งค่าเพย์โหลดโดยใช้เนื้อหาคงที่ -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
With Expression Content - โค้ดคอนฟิกูเรชัน XML ต่อไปนี้จะตั้งค่าเพย์โหลดโดยใช้เนื้อหา Expression -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
ตัวอย่างข้างต้นจะต่อท้ายวันที่ของวันนี้ด้วยเพย์โหลดข้อความ“ สวัสดี”
ตั้งค่า Variable Transformer
ด้วยความช่วยเหลือของ set variableคอมโพเนนต์เราสามารถสร้างหรืออัปเดตตัวแปรเพื่อเก็บค่าซึ่งอาจเป็นค่าตามตัวอักษรง่ายๆเช่นสตริงเพย์โหลดข้อความหรืออ็อบเจ็กต์แอตทริบิวต์เพื่อใช้ภายในขั้นตอนของแอปพลิเคชัน Mule ไม่แนะนำให้ใช้ส่วนประกอบนี้สำหรับนิพจน์หรือการแปลงที่ซับซ้อน สามารถใช้สำหรับคนง่ายๆเช่นselections.
การกำหนดค่าหม้อแปลงตัวแปรชุด
ตารางด้านล่างแสดงชื่อของเขตข้อมูลและคำอธิบายที่จะพิจารณาในขณะกำหนดค่าหม้อแปลงน้ำหนักบรรทุกชุด -
ฟิลด์ | การใช้งาน | คำอธิบาย |
---|---|---|
ชื่อตัวแปร (variableName) | บังคับ | จำเป็นต้องยื่นและแสดงชื่อของตัวแปร ในขณะตั้งชื่อให้ทำตามหลักการตั้งชื่อเช่นต้องมีตัวเลขอักขระและขีดล่าง |
มูลค่า (มูลค่า) | บังคับ | ค่าที่ยื่นเป็นสิ่งจำเป็นสำหรับการตั้งค่าตัวแปร จะยอมรับสตริงตัวอักษรหรือนิพจน์ DataWeave |
ประเภทละครใบ้ (mimeType) | ไม่จำเป็น | เป็นทางเลือก แต่แสดงถึงประเภท mime ของตัวแปร ตัวอย่างเช่นข้อความ / ธรรมดา |
การเข้ารหัส (การเข้ารหัส) | ไม่จำเป็น | นอกจากนี้ยังเป็นทางเลือก แต่แสดงถึงการเข้ารหัสของตัวแปร ตัวอย่างเช่น ISO 10646 / Unicode (UTF-8) |
ตัวอย่าง
ตัวอย่างด้านล่างนี้จะตั้งค่าตัวแปรเป็น payload ข้อความ -
Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio
ในทำนองเดียวกันตัวอย่างด้านล่างจะตั้งค่าตัวแปรเป็น payload ข้อความ -
Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.