MuleSoft - ส่วนประกอบหลักและการกำหนดค่า

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

ต่อไปนี้เป็นประเภทของรูปแบบการกำหนดค่าที่ Mule มีให้ -

  • รูปแบบการบริการที่เรียบง่าย
  • Bridge
  • Validator
  • พร็อกซี HTTP
  • พร็อกซี WS

การกำหนดค่าคอมโพเนนต์

ใน Anypoint studio เราสามารถทำตามขั้นตอนด้านล่างเพื่อกำหนดค่าส่วนประกอบ -

Step 1

เราจำเป็นต้องลากส่วนประกอบที่เราต้องการใช้ในแอปพลิเคชัน Mule ของเรา ตัวอย่างเช่นที่นี่เราใช้คอมโพเนนต์ตัวฟัง HTTP ดังนี้ -

Step 2

จากนั้นดับเบิลคลิกที่ส่วนประกอบเพื่อรับหน้าต่างการกำหนดค่า สำหรับผู้ฟัง HTTP จะแสดงด้านล่าง -

Step 3

เราสามารถกำหนดค่าส่วนประกอบตามความต้องการของโครงการของเรา ตัวอย่างเช่นเราทำกับคอมโพเนนต์ตัวฟัง HTTP -

ส่วนประกอบหลักเป็นส่วนประกอบสำคัญอย่างหนึ่งของขั้นตอนการทำงานในแอป Mule ตรรกะสำหรับการประมวลผลเหตุการณ์ล่อจัดเตรียมโดยส่วนประกอบหลักเหล่านี้ ใน Anypoint studio หากต้องการเข้าถึงส่วนประกอบหลักเหล่านี้คุณสามารถคลิกที่ Core จาก Mule Palette ดังที่แสดงด้านล่าง -

ต่อไปนี้มีหลากหลาย core components and their working in Mule 4 -

กิจกรรมทางธุรกิจที่กำหนดเอง

ส่วนประกอบหลักนี้ใช้สำหรับการรวบรวมข้อมูลเกี่ยวกับโฟลว์ตลอดจนตัวประมวลผลข้อความที่จัดการธุรกรรมทางธุรกิจในแอป Mule กล่าวอีกนัยหนึ่งเราสามารถใช้องค์ประกอบ Custom Business Event เพื่อเพิ่มสิ่งต่อไปนี้ในขั้นตอนการทำงานของเรา -

  • Metadata
  • ตัวบ่งชี้ประสิทธิภาพหลัก (KPI)

จะเพิ่ม KPI ได้อย่างไร?

ต่อไปนี้เป็นขั้นตอนในการเพิ่ม KPI ในโฟลว์ของเราในแอป Mule -

Step 1 - ติดตามล่อ Palette → Core → Components → Custom Business Eventเพื่อเพิ่มองค์ประกอบ Custom Business Event ในขั้นตอนการทำงานในแอป Mule ของคุณ

Step 2 - คลิกที่ส่วนประกอบเพื่อเปิด

Step 3 - ตอนนี้เราจำเป็นต้องระบุค่าสำหรับชื่อที่แสดงและชื่อเหตุการณ์

Step 4 - ในการเก็บข้อมูลจากส่วนข้อมูลข้อความให้เพิ่ม KPI ดังนี้ -

  • ตั้งชื่อ (คีย์) สำหรับ KPI ( การติดตาม:องค์ประกอบข้อมูลเมตา ) และค่า ชื่อนี้จะถูกใช้ในอินเทอร์เฟซการค้นหาของ Runtime Manager

  • ให้ค่าที่อาจเป็นนิพจน์ล่อใด ๆ

ตัวอย่าง

ตารางต่อไปนี้ประกอบด้วยรายการ KPI พร้อมชื่อและมูลค่า -

ชื่อ นิพจน์ / มูลค่า
โรลนักเรียน # [เพย์โหลด ['RollNo']]
ชื่อนักเรียน # [payload ['ชื่อ']]

การประเมินแบบไดนามิก

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

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

ด้วยวิธีนี้จะช่วยให้เราสามารถเลือกสคริปต์ได้แบบไดนามิกแทนที่จะเข้ารหัสแบบฮาร์ดโค้ด

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างของการเลือกสคริปต์จากฐานข้อมูลผ่านพารามิเตอร์การค้นหาและจัดเก็บ Id สคริปต์ที่ในตัวแปรชื่อMyScript ตอนนี้องค์ประกอบการประเมินแบบไดนามิกจะเข้าถึงตัวแปรเพื่อเรียกใช้สคริปต์เพื่อให้สามารถเพิ่มตัวแปรชื่อจากUName พารามิเตอร์การค้นหา

การกำหนดค่า XML ของโฟลว์ได้รับด้านล่าง -

<flow name = "DynamicE-example-flow">
   <http:listener config-ref = "HTTP_Listener_Configuration" path = "/"/>
   <db:select config-ref = "dbConfig" target = "myScript">
      <db:sql>#["SELECT script FROM SCRIPTS WHERE ID = 
         $(attributes.queryParams.Id)"]
      </db:sql>
   </db:select>
   <ee:dynamic-evaluate expression = "#[vars.myScript]">
      <ee:parameters>#[{name: attributes.queryParams.UName}]</ee:parameters>
   </ee:dynamic-evaluate>
</flow>

สคริปต์สามารถใช้ตัวแปรบริบทเช่น message, payload, vars หรือแอตทริบิวต์ อย่างไรก็ตามหากคุณต้องการเพิ่มตัวแปรบริบทที่กำหนดเองคุณต้องระบุชุดคู่คีย์ - ค่า

การกำหนดค่าการประเมินแบบไดนามิก

ตารางต่อไปนี้แสดงวิธีกำหนดค่าองค์ประกอบการประเมินแบบไดนามิก -

ฟิลด์ ค่า คำอธิบาย ตัวอย่าง
นิพจน์ นิพจน์ DataWeave ระบุนิพจน์ที่จะประเมินเป็นสคริปต์สุดท้าย นิพจน์ = "# [vars.generateOrderScript]"
พารามิเตอร์ นิพจน์ DataWeave ระบุคู่คีย์ - ค่า # [{ช่างไม้: 'and', id: payload.user.id}]

ส่วนประกอบอ้างอิงการไหล

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

ลักษณะเฉพาะ

ต่อไปนี้เป็นลักษณะของส่วนประกอบหลักนี้ -

  • ส่วนประกอบหลักนี้ช่วยให้เราสามารถปฏิบัติต่อโฟลว์ที่อ้างอิงทั้งหมดได้เหมือนกับส่วนประกอบเดียวในโฟลว์ปัจจุบัน

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

  • ด้วยวิธีนี้แทนที่จะผนวกขั้นตอนการประมวลผลทั้งหมดเราสามารถผนวกการอ้างอิงโฟลว์ที่ชี้ไปยังขั้นตอนการประมวลผล ภาพหน้าจอด้านล่างแสดงให้เห็นว่า Flow Reference Core Component ชี้ไปที่โฟลว์ย่อยที่ชื่อProcessFiles.

กำลังทำงาน

การทำงานของส่วนประกอบ Flow Ref สามารถเข้าใจได้ด้วยความช่วยเหลือของแผนภาพต่อไปนี้ -

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

หลังจากถึง Flow Reference เหตุการณ์ Mule จะรันโฟลว์ที่อ้างอิงตั้งแต่ต้นจนจบ เมื่อเหตุการณ์ Mule เสร็จสิ้นการเรียกใช้ Ref Flow มันจะกลับไปที่โฟลว์หลัก

ตัวอย่าง

เพื่อความเข้าใจที่ดีขึ้น let us use this component in Anypoint Studio. ในตัวอย่างนี้เรากำลังรับฟัง HTTP เพื่อรับข้อความเหมือนที่เราทำในบทที่แล้ว ดังนั้นเราสามารถลากและวางส่วนประกอบและกำหนดค่าได้ แต่สำหรับตัวอย่างนี้เราต้องเพิ่ม Sub-flow component และตั้งค่า Payload component ตามที่แสดงด้านล่าง -

ต่อไปเราต้องกำหนดค่า Set Payloadโดยดับเบิลคลิกที่มัน ในที่นี้เรากำลังให้ค่า "Sub flow ที่ดำเนินการ" ดังที่แสดงด้านล่าง -

เมื่อกำหนดค่าส่วนประกอบของโฟลว์ย่อยสำเร็จแล้วเราต้องใช้ Flow Reference Component เพื่อตั้งค่าหลังจาก Set Payload ของโฟลว์หลักซึ่งเราสามารถลากและวางจาก Mule Palette ดังที่แสดงด้านล่าง -

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

ตอนนี้บันทึกและเรียกใช้แอปพลิเคชันนี้ ในการทดสอบสิ่งนี้ไปที่ POSTMAN แล้วพิมพ์http:/localhost:8181/FirstAPP ในแถบ URL และคุณจะได้รับข้อความ Sub flow ดำเนินการ

ส่วนประกอบ Logger

ส่วนประกอบหลักที่เรียกว่าคนตัดไม้ช่วยให้เราตรวจสอบและแก้ไขข้อบกพร่องของแอปพลิเคชัน Mule ของเราโดยบันทึกข้อมูลสำคัญเช่นข้อความแสดงข้อผิดพลาดการแจ้งเตือนสถานะน้ำหนักบรรทุก ฯลฯ ใน AnyPoint studio จะปรากฏใน Console.

ข้อดี

ต่อไปนี้เป็นข้อดีบางประการของ Logger Component -

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

ตัวอย่าง

ตัวอย่างด้านล่างแสดงข้อความ“ Hello World” ใน Set Payload ในเบราว์เซอร์และบันทึกข้อความด้วย

ต่อไปนี้คือการกำหนดค่า XML ของโฟลว์ในตัวอย่างด้านบน -

<http:listener-config name = "HTTP_Listener_Configuration" host = "localhost" port = "8081"/>
<flow name = "mymuleprojectFlow">
   <http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
   <set-payload value="Hello World"/>
   <logger message = "#[payload]" level = "INFO"/>
</flow>

โอนส่วนประกอบข้อความ

Transform Message Component หรือที่เรียกว่า Transfer component ช่วยให้เราสามารถแปลงข้อมูลอินพุตเป็นรูปแบบเอาต์พุตใหม่

วิธีการสร้างการเปลี่ยนแปลง

เราสามารถสร้างการเปลี่ยนแปลงของเราได้ด้วยความช่วยเหลือของสองวิธีต่อไปนี้ -

Drag-and-Drop Editor (Graphical View)- นี่เป็นวิธีแรกและใช้มากที่สุดในการสร้างการเปลี่ยนแปลงของเรา ในวิธีนี้เราสามารถใช้วิชวลแมปเปอร์ของคอมโพเนนต์นี้เพื่อลากและวางองค์ประกอบของโครงสร้างข้อมูลขาเข้า ตัวอย่างเช่นในแผนภาพต่อไปนี้มุมมองแบบต้นไม้สองมุมมองแสดงโครงสร้างข้อมูลเมตาที่คาดไว้ของอินพุตและเอาต์พุต เส้นที่เชื่อมต่ออินพุตกับฟิลด์เอาต์พุตแสดงถึงการแมประหว่างมุมมองแบบต้นไม้สองมุมมอง

Script View- การทำแผนที่ภาพของการแปลงยังสามารถแสดงด้วยความช่วยเหลือของ DataWeave ซึ่งเป็นภาษาสำหรับรหัสล่อ เราสามารถทำการเข้ารหัสสำหรับการเปลี่ยนแปลงขั้นสูงบางอย่างเช่นการรวมการทำให้เป็นมาตรฐานการจัดกลุ่มการรวมการแบ่งพาร์ติชันการหมุนและการกรอง ตัวอย่างได้รับด้านล่าง -

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

  • CSV
  • Schema
  • สคีมาไฟล์แบบแบน
  • JSON
  • คลาสออบเจ็กต์
  • ประเภทธรรมดา
  • สคีมา XML
  • ชื่อและประเภทคอลัมน์ Excel
  • ชื่อและประเภทคอลัมน์ความกว้างคงที่