Spring Batch একটি ব্যাচ প্রসেসিং ফ্রেমওয়ার্ক, যা মূলত বড় পরিমাণে ডেটা প্রক্রিয়া এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। Spring Batch এর একটি গুরুত্বপূর্ণ উপাদান হল ItemProcessor, যা ব্যাচ প্রসেসিংয়ের মধ্যে ডেটা প্রক্রিয়াকরণের কাজ করে। এটি মূলত ItemReader থেকে রিড করা ডেটা গ্রহণ করে এবং এটি একটি নির্দিষ্ট প্রক্রিয়ার মাধ্যমে পরিবর্তন করে ItemWriter তে পাঠায়।
ItemProcessor কি?
Spring Batch-এ ItemProcessor একটি ইন্টারফেস, যা একটি নির্দিষ্ট ডেটা প্রক্রিয়া বা পরিবর্তন করে। এটি ItemReader থেকে প্রাপ্ত ইনপুট ডেটাকে প্রসেস (যেমন: কাস্টম লজিক বা ডেটার মান পরিবর্তন) করে এবং পরিবর্তিত ডেটাকে ItemWriter এ পাঠায়। এর মূল উদ্দেশ্য হল রিড করা ডেটার ওপর নির্দিষ্ট প্রক্রিয়া প্রয়োগ করা এবং তার ফলাফল লিখতে দেওয়া।
ItemProcessor ইন্টারফেসটি একটি সাধারণ মেথডের মধ্যে প্রক্রিয়া করে:
T process(I item) throws Exception;
এখানে,
Iহল ইনপুট টাইপ (যেমন: ডেটার ধরনের ক্লাস),Tহল আউটপুট টাইপ (যেমন: প্রক্রিয়া করা ডেটার নতুন ধরনের ক্লাস)।
এটি ItemReader থেকে রিড করা ডেটা গ্রহণ করে এবং তার ওপর কাস্টম লজিক প্রয়োগ করে ডেটাকে পরিবর্তন করে।
ItemProcessor এর কাজ
ItemProcessor এর কাজ হল রিড করা ডেটা প্রক্রিয়া করা। এটি বিভিন্ন ধরনের কাজ করতে পারে, যেমন:
- ডেটা ট্রান্সফরমেশন: ডেটাকে একটি ফর্ম্যাট থেকে অন্য ফর্ম্যাটে রূপান্তর করা। যেমন, স্ট্রিং ডেটা সংখ্যা বা ডেট টাইপে পরিবর্তন করা।
- ডেটা ফিল্টারিং: নির্দিষ্ট শর্তের ভিত্তিতে ডেটা বাদ দেওয়া। যেমন, একটি শর্ত পূরণ না করলে ডেটা প্রক্রিয়াকরণ থেকে বাদ দেওয়া।
- ডেটা বৈধকরণ: রিড করা ডেটার বৈধতা যাচাই করা, এবং অবৈধ ডেটাকে ফিল্টার করা।
- ব্যবসায়িক লজিক প্রয়োগ: কাস্টম ব্যবসায়িক লজিক প্রয়োগ করা যেমন, মুনাফা হিসাব করা বা সেলের পরিমাণ বাড়ানো।
ItemProcessor-এর প্রধান কাজ হল, ItemReader থেকে রিড করা ডেটা গ্রহণ করা এবং নির্দিষ্ট লজিক প্রয়োগ করে ডেটার মান পরিবর্তন বা ট্রান্সফর্ম করা, তারপর সেই পরিবর্তিত ডেটা ItemWriter-এ পাঠানো।
ItemProcessor এর উদাহরণ
ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন আছে যেখানে বিভিন্ন পণ্য (product) তথ্য রয়েছে এবং আমরা সেই পণ্যের দাম ১০% বাড়াতে চাই। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ItemProcessor ব্যবহার করে প্রতিটি পণ্যের দাম ১০% বৃদ্ধি করা হচ্ছে।
1. ItemProcessor ইন্টারফেস বাস্তবায়ন
public class ProductProcessor implements ItemProcessor<Product, Product> {
@Override
public Product process(Product product) throws Exception {
// দাম ১০% বাড়ানো
double increasedPrice = product.getPrice() * 1.10;
product.setPrice(increasedPrice);
return product; // প্রক্রিয়া করা পণ্য
}
}
এখানে, ProductProcessor ক্লাসে ItemProcessor ইন্টারফেসটি বাস্তবায়িত করা হয়েছে। process() মেথডে, পণ্যের দাম ১০% বাড়ানো হচ্ছে।
2. ItemReader এবং ItemWriter
এবার আমরা ItemReader এবং ItemWriter ব্যবহার করে এই প্রক্রিয়াটি সম্পন্ন করবো।
@Bean
public Step step1(ItemReader<Product> reader, ItemProcessor<Product, Product> processor, ItemWriter<Product> writer) {
return stepBuilderFactory.get("step1")
.<Product, Product>chunk(10)
.reader(reader) // ItemReader (Product ডেটা)
.processor(processor) // ItemProcessor (প্রক্রিয়া করা)
.writer(writer) // ItemWriter (ডেটা লিখতে)
.build();
}
এখানে, reader পণ্য রিড করবে, processor পণ্যটির দাম বৃদ্ধি করবে এবং writer প্রক্রিয়া করা পণ্যগুলো লিখে দেবে।
ItemProcessor এর প্রয়োজনীয়তা
1. ডেটা ট্রান্সফরমেশন এবং কাস্টম লজিক প্রয়োগ
ItemProcessor ডেটাকে এক ফর্ম্যাট থেকে অন্য ফর্ম্যাটে পরিবর্তন করতে সাহায্য করে। এর মাধ্যমে ডেটার উপযোগিতা বৃদ্ধি পায় এবং ব্যাচ প্রসেসিংয়ের নির্দিষ্ট প্রক্রিয়া সম্পন্ন করা যায়।
2. ফিল্টারিং এবং ভ্যালিডেশন
ডেটা প্রক্রিয়ার সময়, আপনি কিছু নির্দিষ্ট শর্ত বা কন্ডিশন অনুযায়ী ডেটা ফিল্টার বা ভ্যালিডেট করতে পারেন। এর ফলে আপনি শুধু প্রয়োজনীয় ডেটাই প্রসেস করতে পারবেন, অবাঞ্ছিত ডেটা বাদ দিতে পারবেন।
3. ব্যবসায়িক লজিক প্রয়োগ
Spring Batch-এ ItemProcessor ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনের ব্যবসায়িক লজিক প্রয়োগ করতে পারেন, যেমন কোনো পণ্য বা সার্ভিসের মূল্য বৃদ্ধি, ডিসকাউন্ট প্রক্রিয়া, অথবা কোনো নির্দিষ্ট শর্ত পূরণ হলে ডেটা পরিবর্তন করা।
4. এটা সহজে রিইউজেবল
ItemProcessor সাধারণত একটি আলাদা ক্লাসের মধ্যে থাকে, যা বিভিন্ন ব্যাচ প্রসেসিংয়ের জন্য পুনরায় ব্যবহার করা যায়। এটি Spring Batch-এ কাস্টম লজিকের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।
সারাংশ
ItemProcessor হল Spring Batch-এ একটি ইন্টারফেস যা ডেটাকে ItemReader থেকে রিড করে এবং তার ওপর নির্দিষ্ট প্রক্রিয়া প্রয়োগ করে ItemWriter তে পাঠায়। এটি ডেটা ট্রান্সফরমেশন, ফিল্টারিং, ভ্যালিডেশন এবং ব্যবসায়িক লজিক প্রয়োগের জন্য অত্যন্ত গুরুত্বপূর্ণ। ItemProcessor ব্যাচ প্রসেসিংয়ের মধ্যে কাস্টম লজিক প্রয়োগ এবং ডেটার পরিবর্তন সহজ করে, এবং এটি ডেটার মান বৃদ্ধি এবং প্রসেসিংয়ের কার্যকারিতা উন্নত করতে সাহায্য করে।