DataWeave হল MuleSoft-এর একটি শক্তিশালী ডেটা ট্রান্সফরমেশন ল্যাঙ্গুয়েজ যা ডেটা ইন্টিগ্রেশন, ট্রান্সফরমেশন, এবং ম্যানিপুলেশন করতে ব্যবহৃত হয়। এটি মূলত Mule ESB (Enterprise Service Bus) বা MuleSoft Anypoint Platform-এ ব্যবহৃত হয়। DataWeave ডেটা কনভার্সন এবং ইন্টিগ্রেশন কাজ সহজ এবং দ্রুত করার জন্য ডিজাইন করা হয়েছে।
DataWeave ব্যবহারকারীকে বিভিন্ন ডেটা ফরম্যাটে (যেমন JSON, XML, CSV, এবং Java অবজেক্ট) ডেটা ট্রান্সফরম করতে সক্ষম করে। এটি একটি declarative স্টাইলে কাজ করে, যা খুবই শক্তিশালী এবং পাঠযোগ্য।
DataWeave এর সিনট্যাক্স
DataWeave এর সিনট্যাক্স খুবই সহজ এবং কার্যকর। DataWeave স্ক্রিপ্ট সাধারণত input (ইনপুট ডেটা), output (আউটপুট ডেটা) এবং transformation logic (ট্রান্সফরমেশন লজিক) নিয়ে গঠিত।
একটি DataWeave স্ক্রিপ্ট সাধারণত তিনটি অংশে বিভক্ত থাকে:
- Header (হেডার): ইনপুট এবং আউটপুট ডেটা ফরম্যাট উল্লেখ করা হয়।
- Body (বডি): ডেটা ট্রান্সফরমেশন লজিক থাকে।
- Footer (ফুটার): (যদি প্রযোজ্য হয়) এখানে কোন অতিরিক্ত ফাংশন বা প্রসেসিং থাকতে পারে।
উদাহরণ:
%dw 2.0
output application/json
var myName = "John"
---
{
"name": myName,
"age": 30
}
এখানে, %dw 2.0 হল DataWeave ল্যাঙ্গুয়েজ ভার্সন, output application/json হল আউটপুট ফরম্যাট, এবং তারপর আমরা একটি JSON অবজেক্ট তৈরি করছি।
DataWeave এর ফাংশন
DataWeave বিভিন্ন ধরনের ফাংশন এবং অপারেটর প্রদান করে যা ডেটা ট্রান্সফরমেশনকে সহজ করে তোলে। এখানে কিছু মূল ফাংশনের উদাহরণ দেয়া হল।
১. মান (Literal) ব্যবহার
DataWeave এর মধ্যে আপনি সরাসরি মান (literal) ব্যবহার করতে পারেন।
%dw 2.0
output application/json
---
{
"message": "Hello, World!"
}
এখানে "Hello, World!" একটি লিটারাল স্ট্রিং যা JSON আউটপুটে প্রিন্ট হবে।
২. প্রকাশ (Variables) ব্যবহার
DataWeave এ var কিওয়ার্ড দিয়ে আপনি ভ্যারিয়েবল ঘোষণা করতে পারেন।
%dw 2.0
output application/json
var name = "Alice"
---
{
"greeting": "Hello, " ++ name
}
এখানে, name ভ্যারিয়েবল ব্যবহার করে "Hello, Alice" আউটপুট তৈরি করা হয়েছে।
৩. অপারেটর (Operators) ব্যবহার
DataWeave ফাংশনগুলিতে আপনি বিভিন্ন অপারেটর যেমন ++ (কেটা অপারেটর) বা map (লিস্ট অপারেশন) ব্যবহার করতে পারেন।
%dw 2.0
output application/json
var numbers = [1, 2, 3, 4]
---
numbers map (n) -> n * 2
এখানে map অপারেটর ব্যবহার করে একটি তালিকার প্রতিটি মানকে গুণ করা হয়েছে এবং আউটপুট হবে [2, 4, 6, 8]।
৪. কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)
DataWeave এ কন্ডিশনাল স্টেটমেন্ট ব্যবহার করতে if-else কাঠামো ব্যবহার করা হয়।
%dw 2.0
output application/json
var age = 25
---
{
"status": if (age > 18) "Adult" else "Minor"
}
এখানে, যদি বয়স ১৮ এর বেশি হয়, তবে "Adult" আউটপুট হবে, অন্যথায় "Minor"।
৫. ম্যাপিং (Mapping)
DataWeave এ আপনি একটি ডেটা স্রোতকে অন্য ডেটা স্ট্রাকচারে ম্যাপ করতে পারেন। যেমন, একটি JSON অবজেক্ট থেকে নির্দিষ্ট কীগুলির মান এক্সট্র্যাক্ট করা।
%dw 2.0
output application/json
var data = [
{ "name": "Alice", "age": 25 },
{ "name": "Bob", "age": 30 }
]
---
data map (item) -> {
"full_name": item.name,
"years": item.age
}
এখানে, map ফাংশন ব্যবহার করে একটি নতুন অবজেক্টে name এবং age থেকে full_name এবং years তৈরি করা হয়েছে।
৬. লিস্ট এবং ম্যাপ ফাংশন
DataWeave এ লিস্ট বা ম্যাপ ফাংশন ব্যবহার করে একাধিক অপারেশন করা যায়, যেমন filter, reduce, pluck ইত্যাদি।
%dw 2.0
output application/json
var people = [
{ "name": "Alice", "age": 25 },
{ "name": "Bob", "age": 30 },
{ "name": "Charlie", "age": 35 }
]
---
people filter (p) -> p.age > 30
এখানে filter ফাংশন ব্যবহার করে শুধু তাদের তথ্য বের করা হচ্ছে যারা বয়স ৩০ এর বেশি।
DataWeave এর আউটপুট ফরম্যাট
DataWeave বিভিন্ন আউটপুট ফরম্যাটে কাজ করতে পারে, যেমন:
application/json: JSON ফরম্যাট।application/xml: XML ফরম্যাট।text/csv: CSV ফরম্যাট।application/java: Java অবজেক্ট হিসেবে আউটপুট।
এই আউটপুট ফরম্যাটগুলি সিস্টেমের প্রয়োজন অনুযায়ী নির্বাচিত হয়।
উদাহরণ:
%dw 2.0
output application/xml
---
{
"person": {
"name": "John Doe",
"age": 30
}
}
এখানে JSON ডেটা XML ফরম্যাটে রূপান্তরিত হবে।
সারাংশ
DataWeave হল একটি শক্তিশালী এবং লাইটওয়েট ডেটা ট্রান্সফরমেশন ল্যাঙ্গুয়েজ যা ডেটা ইন্টিগ্রেশন এবং ট্রান্সফরমেশন সহজ করে তোলে। DataWeave-এর সিনট্যাক্স সরল এবং পরিষ্কার, যা ব্যবহারকারীদের সহজে ডেটা ট্রান্সফর্ম এবং ইন্টিগ্রেশন করতে সহায়তা করে। এর ফাংশনগুলি যেমন variables, conditionals, map, filter, reduce ইত্যাদি, বিভিন্ন ধরনের ডেটা অপারেশন সম্পাদন করতে সক্ষম। DataWeave বিভিন্ন ফরম্যাটের মধ্যে ট্রান্সফরমেশন করতে পারে এবং এটি একটি কার্যকরী টুল হিসেবে কাজ করে মিউলফ্লো (Mule Flow) বা API ইন্টিগ্রেশনে।
Read more