0
Tải bản đầy đủ (.pdf) (77 trang)

Các phần tử và kí pháp cơ bản của BPMN

Một phần của tài liệu KHẢO SÁT TÍNH HỢP LỆ CỦA MÔ HÌNH TIẾN TRÌNH NGHIỆP VỤ (Trang 31 -77 )

Theo phiên bản mới nhất là BPMN 2.0 thì có thể chia các kí pháp hay các phần tử sử dụng trong BPMN thành 5 loại cơ bản :

 Flow Objects (Flow Node): Các thành phần xác định luồng thực thi của quy trình

 Connection Objects: Các thành phần liên kết các Flow Objects

 Swimlanes: Thành phần phân nhóm

 Data: Các thành phần mô tả tài nguyên và dữ liệu cho quy trình

 Artifacts: Bổ sung ngữ nghĩa

Các phần tử này sẽ liên kết với nhau theo những quy tắc riêng để xác định được một mô hình quy trình (sau đây gọi là process) dưới dạng trực quan như hình minh họa dưới đây. Mô hình này sẽ chỉ ra những con đường hay trình tự mà theo đó các process có thể được đi từ điểm bắt đầu đến điểm kết thúc, qua các điểm nút.

Các Flow Objects đóng vai trò là các điểm nút. Connection Object đóng vai trò liên kết giữa các điểm nút. Swimlanes có chức năng phân chia các điểm nút thành các nhóm. Artifacts có chức năng bổ sung ý nghĩa cho các phần tử trong process, có thể bằng cách nhóm chúng lại hoặc thêm các chú thích dạng text đi kèm. Còn Data mô tả các tài nguyên mà process sử dụng đến trong suốt quá trình nó được thực thi.

Để mô tả rõ hơn về các phần tử trong BPMN, ta làm quen với khái niệm

process instance. Process instance được hiểu là một luồng thực thi thực sự của process đi qua các điểm nút và các liên kết (Connection Object) theo một con

đường hay trình tự nào đó từ điểm bắt đầu đến điểm kết thúc của process.

2.1.2.1 Các đối tượng luồng (Flow Objects - Flow Node)

Flow Objects là các điểm nút trong process, ở đó nó định nghĩa các hành vi

process instance phải thực hiện trước khi theo các liên kết để chuyển tiếp sang

điểm nút khác. Flow Objects bao gồm các loại sau:

a. Event

Là đối tượng mô tả những sự kiện “xảy ra” trong suốt quá trình process diễn ra. Có các loại sự kiện như: Start Event, End Event (hay Stop Event) và Intermediate Event được kí hiệu bằng các kí pháp như hình minh họa 2-2. Start Event là nơi bắt đầu cho một process và End Event là nơi kết thúc một process.

Intermediate Event là các sự kiện xảy ra trong khi process đang diễn ra và có tác

động tới process. VD: sự kiện công dân nộp bổ sung hồ sơ trong quy trình giải

quyết thủ tục hành chính

Hình 2-2: (Start - Intermediate - End) Event [7]

Ở giữa các đường tròn của Event để chừa các khoảng trắng để đưa vào các kí hiệu bổ sung nhằm phân biệt các loại sự kiện. Có các loại kí hiệu bổ sung như Message – sự kiện gửi hoặc nhận thông điệp, Timer – sự kiện xảy ra sau khi kết thúc một khoảng thời gian nào đó định trước (bộ đếm giờ) hay Error – sự kiện lỗi:

Hình 2-3: Các kí hiệu bổ sung cho Event [7]

b. Activity

Activity định nghĩa các công việc hoặc nhóm các công việc được thực thi trong một process để có thể hoàn thành process đó. Activity mà không thể chia nhỏ hơn gọi là một Task. Ngược lại, nếu Activity bao gồm một chuỗi các Activity nhỏ hơn thì đó được gọi là một sub-process. Sub-process tương đương với một process xét theo khía cạnh cấu trúc

Hình 2-4: Task và Sub-process [7]

Activity có thể được thực thi (implement) bởi những người tham gia quy trình (participants) dưới một vai trò (role) nào đó, hoặc tự động thực thi bởi hệ thống (Automatic Activity) hoặc gọi đến một dịch vụ (Service) nào đó theo mô hình kiến trúc SOA. Mỗi Activity đều có một Activity Handler giúp định nghĩa đối tượng sẽ thực thi Activity đó.

Gateway là đối tượng được sử dụng để rẽ nhánh, kết hợp hoặc chia nhánh các luồng của một process. Tùy thuộc vào chức năng hội tụ hay phân kì của Gateway

mà nó sẽ có một hay nhiều “đường vào” và một hay nhiều “đường ra”. “Đường vào” và “đường ra” chính là các liên kết hay các Connection Object (sẽ được trình bày ở phần sau).

Exclusive Gateway và Inclusive Gateway định hướng cho luồng process dựa trên các điều kiện được xác định trên mỗi “đường ra”. Các Gateway này sẽ làm nhiệm vụ xét các điều kiện trên các đường ra. Nếu điều kiện trên đường ra được thỏa mãn thì process sẽ được chuyển tiếp khỏi Gateway theo “đường ra” đó. Với

Inclusive Gateway thì cho phép chọn nhiều hơn một đường ra, tức là các điều kiện ở các đường ra không loại trừ nhau. Ngược lại, Exclusive Gateway chỉ cho phép duy nhất một đường ra có điều kiện thỏa mãn, tức là các điều kiện loại trừ lẫn nhau. Cả 2 loại Gateway này đều cần đến một loại đường ra đặc biệt gọi là default để khi

không có điều kiện nào thỏa mãn thì process instance sẽ đi ra theo đường này

Complex Gateway cũng tương tự như Exclusive và Inclusive Gateway, có các đường ra có điều kiện và một đường ra default. Điểm khác giữa Complex Gateway và 2 loại kia là bản thân nó cũng chứa 1 điều kiện để kết hợp các process instance đến từ các đường vào. Điều kiện đó cũng giúp nó xác định các đường ra phù hợp.

Event-based Gateway là Gateway mà mỗi đường ra của nó đều liên kết tới một Event nào đó. Và cuối cùng là Parallel Gateway, là loại Gateway đơn giản nhất. Nếu là Parallel Gateway phân kì thì nó sẽ tự động sinh ra các bản sao của process instance ở đường vào và chuyển tiếp mỗi process instance đó đến các đường ra của

Hình 2-5: Các loại Gateway [7] 2.1.2.2 Các đối tượng kết nối (Connection Objects)

Connection Objects là các đối tượng sử dụng để liên kết giữa phần tử còn lại của process (giữa các Flow Object với nhau hay giữa Flow Object và Artifacts)

a. Sequence Flow

Là loại liên kết được dùng để kết nối giữa các Flow Object với nhau. Mũi tên chỉ hướng đi của process instance khi đi qua Sequence Flow. Mỗi Sequence Flow

có “nguồn” và “đích” đều là các Flow Object

Kí pháp trên hình 1.6 là kí pháp cơ bản nhất dùng cho Sequence Flow. Trong Sequence Flow có thể chia ra thành các loại nhỏ hơn là Unconditional Flow và Conditional Flow. Conditional Flow là loại Sequence Flow có định nghĩa điều kiện.

Nếu Conditional Flow đi ra từ một Gateway thì nó sử dụng kí pháp cơ bản như hình 2-7, nhưng nếu nó đi ra từ một Activity thì buộc phải sử dụng kí pháp sau đây:

Hình 2-7: Conditional Flow [7]

Default Flow là Sequence Flow đặc biệt sử dụng trong các Gateway hoặc Activity có các “đường ra” là các Conditional Flow. Nó thuộc loại Unconditional Flow nhưng lại sử dụng kí pháp như sau:

Hình 2-8: Default Flow [7]

b. Association

Dùng để liên kết các Artifact với các Flow Object. Kí pháp của Association là đường thẳng nét đứt. Trong trường hợp cần thể hiện hướng ta sử dụng mũi tên ở đầu

Hình 2-9: Association [7] 2.1.2.3 Swimlanes

Swimlane dùng để phân nhóm các Flow Object. Có 2 loại Swimlane là Pool và Lane. Pool chỉ ra ranh giới, phạm vi của process. Tất cả các đối tượng nằm bên trong Pool của một process đều thuộc về process đó. Trong một process có nhiều

process để hoàn thành process đó. Lane sẽ chia các Flow Object thành các nhóm

theo từng vai trò này. Những công việc thuộc về cùng một vai trò sẽ thuộc cùng một Lane. a. Pool Hình 2-10: Pool [7] b. Lanes Hình 2-11: Lane [7] c. Ví dụ về Pool và Lane

Trong ví dụ dưới đây, process bao gồm 3 vai trò (role) là bộ phận nhân sự, ban tuyển dụng và bộ phận kế toán. Những người tham gia vào process (participants) sẽ đóng một trong 3 vai trò này và sẽ chỉ thực hiện những công việc được chỉ ra là dành cho họ. Ví dụ bộ phận nhân sự sẽ chỉ thực hiện việc tìm kiếm ứng viên theo tiêu chí của ban tuyển dụng và ta có thể thấy Activity “Find Candidates” nằm trên Lane của bộ phận nhân sự.

Hình 2-12: Minh họa Pool và Lane [13] 2.1.2.4 Data

Data Object là các đối tượng cung cấp các tài nguyên cần thiết cho process.

Data Object có thể thể hiện một đối tượng đơn lẻ hoặc một tập các đối tượng. Đối với cả process thì Data Input và Data Output cung cấp thông tin như nhau

Hình 2-13: Các loại Data Object [7] 2.1.2.5 Artifacts

Artifacts được sử dụng để cung cấp thêm thông tin cho các phần tử của

a. Group

Dùng để nhóm các phần tử thuộc cùng 1 loại (category) hoặc cùng phục vụ 1 mục đích nào đó. Tên loại được đặt bằng tên Group

Hình 2-14: Group [7]

b. Text Annotation

Được dùng để chú thích, thường gắn kèm với các phần tử mà nó chú thích, cung cấp các thông tin bổ sung dạng text giúp người đọc dễ hiểu về mô hình hơn

Hình 2-15: Text Annotation [7] 2.2 Metamodel của mô hình BPM[4][7]

Metamodel của BPM bao gồm các lớp mô tả cho các phần tử của BPMN (Activity, Sequence Flow, Gateway…) và quan hệ (association, composition, aggregation) giữa chúng. Tất cả các phần tử của BPMN đều xây dựng dựa trên một phần tử cơ bản hay nói cách khác là đều kế thừa từ một lớp cơ bản nhất là BaseElement.

Phần tử quan trọng trong các mô hình BPM là FlowNode và SequenceFlow. Cả 2 đều là lớp con của FlowElement – lớp mô tả các đối tượng tạo nên luồng thực thi của một process. Quan hệ Source và Target chỉ ra quan hệ của 2 phần tử trên. SequenceFlow có nhiệm vụ chỉ ra hướng di chuyển của process instance từ một

FlowNode (đóng vai trò source) đến một FlowNode (đóng vai trò target). Một FlowNode có thể có nhiều incoming hoặc outgoing SequenceFlow. FlowNode giống như các nút hay các đỉnh còn SequenceFlow là các cạnh của một đồ thị có hướng.

Các FlowElement sẽ thuộc về một container nào đó (composition FlowContain), có thể là một process hoặc một sub-process. Các sub-process cũng

thuộc về process cha của nó (composition SubProc). Trong một process cụ thể thì sub-process được coi như một Activity nhưng xét về mặt cấu trúc thì nó không khác gì một process thế nên nó kế thừa từ cả 2 lớp Activity và FlowElementContainer.

Trong một process hoặc sub-process có các Lane (composition LaneContain)

để phân nhóm các FlowNode. Một Lane có thể chứa nhiều FlowNode nhưng không thể chứa SequenceFlow, tức là các SequenceFlow có thể đi qua ranh giới giữa các Lane. Đó cũng chính là lí do mà Lane không phải là lớp con của FlowElementContainer hay FlowElement. Mỗi FlowNode sẽ chỉ thuộc về một Lane duy nhất (aggregation NodeContain).

Association boundaryActivityEvent được dùng để mô tả liên kết giữa Activity và BoundaryEvent. BoundaryEvent là loại Event gắn liền với mỗi Activity và xét về mặt kí pháp thì nó được đặt trên viền bao của Activity để mô tả các Event xảy ra trong quá trình Activity đó được thực thi

Khái niệm cần lưu ý nữa là enumeration GatewayDirection. Enumeraion này quy định tính chất phân kì hay hội tụ hay kết hợp của Gateway:

 Unspecified: không có ràng buộc, có thể có nhiều incoming SequenceFlow hoặc ko, có thể có nhiều outgoing SequenceFlow hoặc không

 Converging: Phải có nhiều incoming SequenceFlow (>1) và không nhiều hơn 1 outgoing SequenceFlow

 Diverging: Phải có nhiều outgoing SequenceFlow (>1) nhưng có không nhiều hơn 1 incoming SequenceFlow

H ìn h 2 -16 : M eta mod el c ơ b ản c ho c ác h ìn h B P M

Chương 3. KIỂM TRA TÍNH HỢP LỆ CỦA MÔ HÌNH TIẾN TRÌNH NGHIỆP VỤ BPMN

Trong chương này chúng ta sẽ đặc tả BPM metamodel bằng ngôn ngữ đặc tả của USE đồng thời mô tả một số ràng buộc cơ bản và quan trọng cho BPM metamodel bằng OCL. Tiếp đó, chúng tôi thử nghiệm phương pháp với mô hình tiến trình nghiệp vụ cho quy trình vay vốn tín dụng.

3.1 Biểu diễn metamodel của mô hình tiến trình nghiệp vụ với USE

Trong phần này ta tập trung vào việc đặc tả BPM metamodel bằng ngôn ngữ của USE – ngôn ngữ đặc tả dạng text. BPM metamodel ở đây không đề cập đến tất cả các phần tử của BPMN mà sẽ chỉ đề cập đến những phần tử có ảnh hưởng trực tiếp đến quá trình thực thi một process (sự rẽ nhánh, hội tụ, chỉ định các đối tượng tham gia process, xử lý các sự kiện xảy ra trong tiến trình của process…). Dựa vào cú pháp (mục 1.3.5) và mô tả (mục 2.2) ở các phần trước ta có thể đặc tả cho BPM metamodel như sau.

3.1.1 Khai báo đặc tả BPM metamodel

Khai báo mô hình trong USE được bắt đầu bằng từ khóa model... Ví dụ:

model BPM

3.1.2 Khai báo Enumeration GatewayDirection

Enumeration GatewayDirection định nghĩa tính chất hội tụ hay phân kì hay kết hợp của Gateway:

enum GatewayDirection

{Unspecified,Converging,Diverging,Mixed}

 Unspecified: không xác định

 Converging: Gateway hội tụ (có nhiều incoming SequenceFlow (>1) và không nhiều hơn 1 outgoing SequenceFlow)

 Diverging: Gateway phân kì (có nhiều outgoing SequenceFlow (>1) nhưng có không nhiều hơn 1 incoming SequenceFlow)

 Mixed: Gateway kiểu kết hợp (có nhiều (>1) outgoing và nhiều (>1) incoming SequenceFlow)

3.1.3 Khai báo và định nghĩa các lớp

Các lớp được định nghĩa theo biểu đồ lớp đã chỉ ra ở mục 2.2

class BaseElement attributes

id : String -- thuộc tính để định danh các phần tử

operations end

class FlowElement < BaseElement attributes

name : String -- đặt tên cho các phần tử

operations end

class FlowElementContainer < BaseElement attributes

operations end

class Lane < BaseElement attributes

name : String

--tên cho Lane (thường là tên của role --mà nó thể hiện)

operations end

class FlowNode < FlowElement attributes

operations end

class SequenceFlow < FlowElement attributes

selected : Boolean

-- mang giá trị “true” nếu process instance --đi qua nó

operations end

class ConditionSequenceFlow < SequenceFlow attributes

condition : Boolean

-- mang giá trị “true” nếu điều kiện của nó

-- được thỏa mãn

operations end

class UnconditionSequenceFlow < SequenceFlow attributes

operations end

class Activity < FlowNode attributes

operations end

class Event < FlowNode attributes

operations end

class Gateway < FlowNode attributes

gatewayDirection : GatewayDirection -- chỉ ra tính chất phân kì hay hội tụ

operations end

class Process < FlowElementContainer attributes

operations end

class SubProcess < FlowElementContainer, Activity attributes isTransaction : Boolean triggeredByEvent : Boolean completionCondition : String operations end

class Task < Activity attributes

implementation : String

-- chỉ ra phương thức thực thi của Task operationRef: String

-- tên của operation được tham chiếu đến operations

end

class StartEvent < Event attributes

operations end

class IntermediateEvent < Event attributes

operations end

attributes operations end

class BoundaryEvent < IntermediateEvent attributes

operations end

class EndEvent < Event attributes

operations end

class InclusiveGateway < Gateway attributes

default : UnconditionSequenceFlow

-- chỉ ra SequenceFlow đóng vai trò default

operations end

class ExclusiveGateway < Gateway attributes

default : UnconditionSequenceFlow

-- chỉ ra SequenceFlow đóng vai trò default

operations end

class ParallelGateway < Gateway attributes

operations end

class ComplexGateway < Gateway attributes

-- điều kiện kết hợp các process instance của --Gateway

default : UnconditionSequenceFlow -- chỉ ra SequenceFlow đóng vai trò default

waitingForStart : Boolean activationCount : Integer operations

end

3.1.4 Khai báo và định nghĩa các quan hệ giữa các lớp

Các quan hệ cũng được mô tả như trong biểu đồ lớp ở mục 2.2.

3.1.4.1 Composition FlowContain

Tất cả các FlowElement đều thuộc về một container chứa chúng. Container đó có thể là process hoặc sub-process. Các FlowElement không được vượt ra ngoài

ranh giới của container chứa nó.

composition FlowContain between

FlowElementContainer[1] role container FlowElement[0..*] role flowElements end

3.1.4.2 Composition SubProc

Một sub-process về mặt cấu trúc cũng là một process nhưng nó nằm trong một

process khác và đóng vai trò như một Activity trong process đó. Một process có thể

có nhiều sub-process.

composition SubProc between Process[1] role parentProcess

SubProcess[0..*] role subProcesses end

3.1.4.3 Composition LaneContain

Trong các FlowElementContainer như process và sub-process có định nghĩa ra các Lane để phân nhóm các FlowNode. Lane thường dùng để thể hiện các vai trò (role) tham gia vào process đó và thường thì tên của Lane cũng chính là tên vai trò mà nó thể hiện.

composition LaneContain between

FlowElementContainer[1] role flowElementContainer Lane[0..*] role lanes

end

3.1.4.4 Aggregation NodeContain

Mỗi FlowNode chỉ thuộc về một Lane xác định.

aggregation NodeContain between Lane[1] role lane

FlowNode[0..*] role flowNodeRefs end

3.1.4.5 Association Target

Quan hệ Target mô tả quan hệ giữa SequenceFlow và FlowNode đích mà nó

Một phần của tài liệu KHẢO SÁT TÍNH HỢP LỆ CỦA MÔ HÌNH TIẾN TRÌNH NGHIỆP VỤ (Trang 31 -77 )

×