উদাহরণ সহ Workflow এবং Task Execution

jBPM Workflow এবং Task Execution - জেবিপিএম৫ (Jbpm5) - Java Technologies

309

jBPM5 (Java Business Process Management 5) একটি শক্তিশালী বিজনেস প্রসেস ম্যানেজমেন্ট (BPM) ইঞ্জিন যা ব্যবসায়িক প্রক্রিয়া (workflow) তৈরি, পরিচালনা এবং অটোমেট করার জন্য ব্যবহৃত হয়। এটি Task Execution এর মাধ্যমে বিভিন্ন কাজ (task) সম্পাদন করতে সাহায্য করে। নিচে একটি উদাহরণের মাধ্যমে Workflow এবং Task Execution এর কার্যক্রম ব্যাখ্যা করা হলো।

উদাহরণ: Leave Request Process

ধরা যাক, একটি Leave Request Process তৈরি করতে হবে যেখানে কয়েকটি কাজের ধাপ থাকবে:

  1. Submit Request - ব্যবহারকারী একটি ছুটির আবেদন জমা দেবে।
  2. Approve Request - ম্যানেজার আবেদনটি অনুমোদন করবে।
  3. Send Notification - প্রক্রিয়া শেষ হলে ব্যবহারকারীকে একটি নোটিফিকেশন পাঠানো হবে।

এই প্রক্রিয়া সম্পন্ন করার জন্য দুটি ধাপ মানবিক কাজ হিসেবে বরাদ্দ হবে এবং একটি ধাপ সিস্টেম কাজ হিসেবে সম্পাদিত হবে।

১. BPMN2 Process Definition:

প্রথমে, BPMN2 (Business Process Model and Notation) ফরম্যাটে প্রক্রিয়া ডিফাইন করতে হবে।

Leave Request Process BPMN2 XML:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:bpws="http://www.w3.org/2003/05/partner-link"
             xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
             id="Process_1"
             targetNamespace="http://www.jboss.org/drools">
    <process id="leaveRequestProcess" name="Leave Request Process" isExecutable="true">
        <startEvent id="startEvent1" name="Start" />
        
        <userTask id="submitRequest" name="Submit Request" />
        <sequenceFlow id="flow1" sourceRef="startEvent1" targetRef="submitRequest" />
        
        <userTask id="approveRequest" name="Approve Request" />
        <sequenceFlow id="flow2" sourceRef="submitRequest" targetRef="approveRequest" />
        
        <serviceTask id="sendNotification" name="Send Notification" />
        <sequenceFlow id="flow3" sourceRef="approveRequest" targetRef="sendNotification" />
        
        <endEvent id="endEvent1" name="End" />
        <sequenceFlow id="flow4" sourceRef="sendNotification" targetRef="endEvent1" />
    </process>
</definitions>

২. Workflow Execution and Task Execution:

এখন, প্রক্রিয়া তৈরি হয়ে গেলে, workflow execution এবং task execution কিভাবে পরিচালিত হবে তা Java কোডের মাধ্যমে দেখানো হবে।

১. Workflow Execution:

jBPM5-এ একটি প্রক্রিয়া শুরু করার জন্য, KieSession ব্যবহার করা হয়। প্রক্রিয়া শুরু করার জন্য নিচের কোডটি ব্যবহার করা হবে।

KieSession ksession = kieContainer.newKieSession();
ProcessInstance processInstance = ksession.startProcess("leaveRequestProcess");  // Process ID ব্যবহার করে প্রক্রিয়া শুরু

এখানে leaveRequestProcess হলো পূর্বে ডিফাইন করা প্রক্রিয়ার ID।

২. Task Execution:

যেহেতু এই প্রক্রিয়ায় দুটি user tasks (মানবিক কাজ) এবং একটি service task (সিস্টেম কাজ) রয়েছে, সেগুলি আলাদাভাবে সম্পন্ন করতে হবে।

User Task - Submit Request:

এটি প্রথম কাজ, যেখানে ব্যবহারকারী একটি ছুটির আবেদন জমা দেবে। এই কাজটি claim এবং complete করতে হবে।

TaskService taskService = ksession.getTaskService();
List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("user1", "en-US");  // ব্যবহারকারী "user1" এর জন্য কাজগুলি নিয়ে আসুন
Task task = tasks.get(0);  // প্রথম কাজ (Submit Request)
taskService.claim(task.getId(), "user1");  // কাজটি ব্যবহারকারী "user1" কে বরাদ্দ করুন
taskService.complete(task.getId(), "user1", null);  // কাজ সম্পন্ন করুন
User Task - Approve Request:

এটি দ্বিতীয় কাজ, যেখানে ম্যানেজার আবেদনটি অনুমোদন করবে। এখানে একইভাবে কাজটি claim এবং complete করতে হবে।

tasks = taskService.getTasksAssignedAsPotentialOwner("manager1", "en-US");  // ম্যানেজার "manager1" এর জন্য কাজগুলি নিয়ে আসুন
task = tasks.get(0);  // দ্বিতীয় কাজ (Approve Request)
taskService.claim(task.getId(), "manager1");  // কাজটি ম্যানেজার "manager1" কে বরাদ্দ করুন
taskService.complete(task.getId(), "manager1", null);  // কাজ সম্পন্ন করুন
Service Task - Send Notification:

এটি একটি সিস্টেম কাজ যেখানে একটি নোটিফিকেশন পাঠানো হবে। এটি কোনো ব্যবহারকারী সম্পাদন করবে না, বরং সিস্টেম দ্বারা কার্যকর হবে। তাই, এটি সিস্টেমের মাধ্যমে সম্পন্ন করা হবে।

// Service task এর জন্য একটি সাধারণ কাজ সম্পাদন
ksession.getWorkItemManager().completeWorkItem(workItemId, null);  // service task সম্পন্ন করুন

৩. Complete Process:

যখন সমস্ত কাজ সম্পন্ন হয়, তখন প্রক্রিয়া complete হবে এবং প্রক্রিয়ার অবস্থা শেষ হয়ে যাবে।

// প্রক্রিয়ার অবস্থা সম্পন্ন হওয়া ট্র্যাক করতে
processInstance = ksession.getProcessInstance(processInstance.getId());
if (processInstance == null) {
    System.out.println("Process has completed.");
}

৩. Task Execution Flow:

  1. Submit Request: ব্যবহারকারী প্রথম কাজটি জমা দেন।
  2. Approve Request: ম্যানেজার এটি অনুমোদন করেন।
  3. Send Notification: সিস্টেম কাজ সম্পন্ন করে এবং ব্যবহারকারীকে নোটিফিকেশন পাঠায়।

সারাংশ:

এটি ছিল একটি Leave Request Process তৈরি এবং Task Execution এর উদাহরণ। এখানে আমরা দেখেছি কিভাবে:

  1. BPMN2 XML ফাইল তৈরি করা হয়।
  2. Workflow শুরু এবং পরিচালনা করা হয়।
  3. Task Execution (ব্যবহারকারী কাজ এবং সিস্টেম কাজ) সম্পন্ন করা হয়।

jBPM5 ব্যবহার করে এই ধরনের কাজের ধাপগুলো অটোমেটেডভাবে বা মানবিকভাবে সম্পাদন করা যায়, এবং প্রক্রিয়া শুরু থেকে শেষ পর্যন্ত সম্পূর্ণরূপে ট্র্যাক করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...