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.