1.2.2 .Chuẩn mô hình hóa tiến trìnhnghiệp vụ
1.2.3. Từ mô hình hóa đến thực thi tự động tiến trìnhnghiệp vụ
Trong những phần đã trình bày ở trên, ta đã có công cụ để xây dựng mô hình tiến trình nghiệp vụ. Để trả lời câu hỏi làm thế nào để xây dựng phần mềm“Hệ thống quản lý tiến trình nghiệp vụ”. Sau đây sẽ trình bày ngôn ngữ thực thi tiến trình nghiệp vụ (Business Process Execution Language - BPEL) – ngôn ngữ có mối quan hệ mật thiết với chuẩn BPMN, và Máy thực thi ngôn ngữ đó (BPEL Engine) cụ thể là Apache ODE (Orchestration Director Engine).
1.2.3.1.Business Process Execution Language (BPEL)
a. Giới thiệu
BPEL thực ra là viết tắt của WS-BPEL (Web Services Business Process Execution Language), là chuẩn ngôn ngữ thực thi để định nghĩa các hoạt động trong tiến trình nghiệp vụ với các dịch vụ web. BPEL là ngôn ngữ định nghĩa Business Processe, nó kết hợp các dịch vụ và tạo ra dịch vụ mới. Các tiến trình trong BPEL xuất hoặc nhập thông tin bằng cách sử dụng giao diện Webservice. Phiên bản hiện tại là WS-BPEL 2.0 - phiên bản chính thức đầu tiên của BPEL đạt chuẩn OASIS năm 2007.
WS-BPEL là một đặc tả của nhà cung cấp trung gian do OASIS phát triển để xác định qui trình nghiệp vụ như tập các tương tác giữa các dịch vụ Web. OASIS định nghĩa WS-BPEL như sau:
"Các qui trình nghiệp vụ có thể được mô tả theo hai cách: Các tiến trình nghiệp vụ thực hiện mô hình hóa hành vi thực tế của người tham gia trong tương tác nghiệp vụ và Các tiến trình nghiệp vụ trừu tượng một phần là các tiến trình xác định riêng, không nhằm đến việc thực hiện. Một tiến trình nghiệp vụ trừu tượng có thể ẩn giấu đối với một vài chi tiết tác nghiệp cụ thể.
WS-BPEL là ngôn ngữ để mô tả các tiến trình nghiệp vụ Trừu tượng và Thực thi. Bằng cách đó, nó mở rộng mô hình tương tác các dịch vụ Web và cho phép nó hỗ trợ các giao dịch kinh doanh. WS-BPEL định nghĩa một mô hình tích hợp tương tác, sẽ tạo điều kiện mở rộng tích hợp tiến trình tự động hóa trong cả không gian kinh doanh".
BPEL là một chuẩn ngôn ngữ dựa trên XML, định nghĩa các cấu trúc để có thể biểu diễn các tiến trình nghiệp vụ. Nó định nghĩa tập các cấu trúc điều khiển cơ bản (điều kiện, vòng lặp…) cũng như các thành phần để gọi dịch vụ từ Webservice hoặc nhận thông tin từ các dịch vụ. WS-BPEL dựa trên WSDL (Web Service Definition Language) để thực hiện các giao diện với Webservice.
b. Công nghệ liên quan tới BPEL
Theo như phần giới thiệu ở trên thì BPEL liên quan trực tiếp đến các công nghệ Web service, vậy để hiểu được ngôn ngữ BPEL chúng ta cần nắm các khái niệm cơ bản của Web service. Trong phần này sẽ trình bày một số công nghệ, khái niệm cơ bản liên quan đến Web service: Thế nào là Web service; Kiến trúc của Web service; Các thành phần của dịch vụ Web; Quy trình xây dựng một dịch vụ Web.
Web service: Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, với giao diện chung và sự gắn kết của nó được mô tả bằng XML. Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu. Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ Web khác.
Kiến trúc của Web service: Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration). Hình dưới đây mô tả kiến trúc của Web Service:
Hình 1.9 Hình mô tả kiến trúc của Web Service
Thành phần của Web service: Các thành phần của Web service gồm: XML, WSDL, UDDI, SOAP.
XML – eXtensible Markup Language: được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B.
WSDL - Web Service Description Language: WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML, bao gồm các thông tin:
− Tên dịch vụ
− Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ Web
− Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của dịch vụ Web cộng với tên cho giao diện này).
Cấu trúc tài liệu WSDL được định nghĩa như sau: <definitions>
<types>
definition of types... </types>
<message> definition of a message.... </message> <portType> definition of a port... </portType> <binding> definition of a binding.... </binding> </definitions>
Universal Description, Discovery, and Integration (UDDI)
UDDI định nghĩa một số thành phần cho biết các thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web.
Cấu trúc UDDI :
− Trang trắng - White pages: chứa thông tin liên hệ và các định dạng chính yếu của
dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin nhận dạng… Những thông tin này cho phép các đối tượng khác xác định được dịch vụ.
− Trang vàng - Yellow pages: chứa thông tin mô tả dịch vụ Web theo những loại
khác nhau. Những thông tin này cho phép các đối tượng thấy được dịch vụ Web theo từng loại với nó.
− Trang xanh - Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức
năng của dịch vụ Web.
− Loại dịch vụ - tModel: chứa các thông tin về loại dịch vụ được sử dụng.
SOAP - Simple Object Access Protocol:
Chúng ta đã hiểu cơ bản dịch vụ Web như thế nào nhưng vẫn còn một vấn đề khá quan trọng. Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu trả lời là các
SOAP. Nói cách khác chúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP.
SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP.
Một SOAP đơn giản trong body sẽ lưu các thông tin về tên thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số. Có 3 kiểu thông báo sẽ được đưa ra khi truyền thông tin: request message(tham số gọi thực thi một thông điệp), respond message (các tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi).
Quy trình xây dựng một Web service: Có 4 giai đoạn chính để xây dựng một dịch vụ Web là xây dựng, triển khai, tiến hành và quản lý.
Để xây dựng một dịch vụ Web, chúng ta cần hiểu được những việc phải làm và nên bắt đầu từ đâu. Qui trình xây dựng một dịch vụ Web bao gồm các bước sau:
− Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp (sử dụng ngôn ngữ Java chẳng hạn).
− Tạo WSDL cho dịch vụ − Xây dựng SOAP server
− Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy − Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với
SOAP server
− Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java) và sau đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server.
Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một dịch vụ Web như ý muốn. Sau đó là cung cấp dịch vụ Web này trên Internet.
c. Cấu trúc, thành phần của BPEL
BPEL là ngôn ngữ lập trình theo cấu trúc XML, giống như các ngôn ngữ lập trình BPEL gồm 3 thành phần chính:
− Logic lập trình (Programming logic): BPEL
− Kiểu dữ liệu (Data types): XSD (XML Schema Definition)
− Dữ liệu đầu ra đầu vào (Input/Output): WSDL (Web Services Description Language)
Hình 1.10 Mối quan hệ giữa Process trong BPEL và WSDL
BPEL cung cấp các cấu trúc vòng lặp, nhánh, biến, gán… khá giống ngôn ngữ lập trình truyền thống và cho phép định nghĩa các business tiến trìnhes theo cách 1 thuật toán. Nhờ các cấu trúc này mà việc định nghĩa tiến trình trở lên đơn giản hơn.Cấu trúc chính của WS-BPEL 2.0 gồm các thành phần sau:
− Process
− PartnerLink: kết nối tương tác giữa các tiến trình
− Variable: dữ liệu được sử dụng trong tiến trình
− CorrelationSets: các thông điệp tương quan để xử lý các trường hợp dựa trên định danh duy nhất
Compensation handlers: gọi hành vi compensational Activities:
Structured Activities Basic Activities
d. Ví dụ chương trình “Hello Word” được viết bằng BPEL
XML Schema Definition - XSD: Được sử dụng để định nghĩa kiểu dữ liệu sẽ được sử dụng trong chương trình. Ở đây XSD sẽ định nghĩa kiểu dữ liệu string “Hello World”
File WSDL: Được sử dụng để dịnh nghĩa webservice cung cấp dịch vụ in ra dòng “Hello World”: <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.eclipse.org/tptp/choreography/2004/engine/Pri nt" xmlns:tns="http://www.eclipse.org/tptp/choreography/2004/engine/Print" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/" xmlns:java="http://schemas.xmlsoap.org/wsdl/java/" >
<!-- engine printout port --> <message name="PrintMessage">
<part name="value" type="xsd:string"/> </message>
<portType name="Print"> <operation name="print">
<input message="tns:PrintMessage"/> </operation>
</portType>
<binding name="PrintPortWsifBinding" type="tns:Print"> <java:binding/>
<format:typeMapping encoding="Java" style="Java">
<format:typeMap typeName="xsd:string" formatType="java.lang.String"/> </format:typeMapping>
<operation name="print">
<java:operation methodName="print" parameterOrder="value"/> </operation>
</binding> <service>
<port name="JavaPrintPort" binding="tns:PrintPortWsifBinding"> <java:address className="org.eclipse.tptp.choreography.jengine.internal.extensions.wsdlbinding.w sif.ports.EnginePrinterPort"/> </port> </service> <partnerLinkType name="printLink">
<role name="printService" portType="tns:Print"/> </partnerLinkType>
BPEL Engine
Khi các tiến trình đã được định nghĩa bằng WS-BPEL, bước tiếp theo là thực thi những tiến trình đó bằng cách nào. Cách đơn giản đó là các tiến trình đó được đưa vào tiến trình-engine, engine này sẽ thực hiện nhiệm vụ thao tác với Web service, gửi và nhận message, điều khiển, thao tác dữ liệu và điều khiển lỗi như đã được định nghĩa trong tiến trình.
Hình 1.11 Kiến trúc của một Process-Engine
Một trong những engine của BPEL đó là Apache ODE (Orchestration Director Engine), đây là dự án mã nguồn mở được xây dựng bởi Intalio, được viết bằng java, hệ thống sẽ thực thi các tiến trình được viết bằng mã WS-BPEL 2.0 (Apache ODE, 2009).
Hình minh họa dưới đây mô tả kiến trúc ODE BPEL compiler của Apache ODE.
Bảng dưới đây liệt kê danh sách các công cụ thiết kế BPEL, và các Engine BPEL điển hình: Sản phẩm Liên kết Active BPEL Designer, Active BPEL Engine http://www.active-endpoints.com/products/index.html BPWS4J, WBI Server Foundation http://www.alphaworks.ibm.com/tech/bpws4j http://www-306.ibm.com/software/integration/wbisf/ Oracle BPEL Process Manager http://www.oracle.com/technology/products/ias/bpel/index.html Bexee http://bexee.sourceforge.net Cape Clear Orchestrator http://www.capeclear.com/technology/bpel/index.shtml Parasoft BPEL Maestro http://www.parasoft.com/jsp/products/home.jsp?product=BPEL
1.3.Hệ thống quản lý tiến trình nghiệpvụ (Business Process ManagementSystemBPMS)
Phần 1.2 chúng ta đã tìm hiểu công cụ mô hình hóa tiến trình nghiệp vụ BPMN, ngôn ngữ thực thi tiến trình nghiệp vụ BPEL và máy thực thi ngôn ngữ BPEL. Với những yếu tố này chúng ta đã có thể trả lời câu hỏi làm thế nào để xây dựng một phần mềm hệ thống Quản lý tiến trìnhnghiệp vụ (BPMS)đó là:Cần có một công cụ để mô hình hóa tiến trình nghiệp vụ, từ mô hình đó BPMS tự động sinh ra mã BPEL, và BPEL engine sẽ tự động thực thi mô hình tiến trình nghiệp vụ đã được thiết kế. Trong phần này chúng ta sẽ tìm hiểu về khái niệm, kiến trúc của hệ thống BPMS, các sản phẩm mã nguồn mở, sản phẩm kinh doanh BPMS tiêu biểu.
1.3.1.BPM + IT = BPMS (Business Process Management System)
Như ở phần trước đã trình bày, chúng ta đã biết Business Process Management - BPM không phải là một lý thuyết mới mẻ, nhưng cách thực hiện nó đã được thay đổi, được hỗ trợ rất nhiều bởi công nghệ mới. BPM là sản phẩm cung cấp tập các công cụ và dịch vụ cần thiết để quản lý tiến trình nghiệp vụ, kinh doanh theo thuyết quản lý. Khi tiến trình nghiệp vụ, kinh doanh này được tự động hóa thì được gọi là “Hệ thống quản lý tiến trình nghiệp vụ”.
Hệ thống quản lý tiến trình nghiệp vụ (BPMS) thể hiện một bước đột phá trong việc sử dụng và thực hiện hệ thống thông tin. BPMS thay đổi kiểu thiết kế truyền thống sang một hướng thiết kế tập trung vào tiến trình nghiệp vụ để phù hợp với thực tế tập trung vào tiến trình nghiệp vụ của các tổ chức quản lý tiến trình nghiệp vụ. Vì vậy BPMS cho phép các tổ chức này có thể điều khiển được tất cả các chu trình hoạt động Quản lý tiến trình nghiệp vụ (BPM) trong thực tế như: Đo lường, đánh giá; Giám sát; Kiểm soát; Phân tích tiến trình… BPMS làm việc như một trung tâm kiểm soát con người, ứng dụng và dữ liệu (Chang 2006).
Để hiểu rõ sự khác biệt trong cách tiếp cận của hệ thống BPMS chúng ta có thể tìm hiểu về “Kiểu thiết kế truyền thống sản phầm phần mềm” và “Kiểu thiết kế tập trung vào tiến trình”:
− Theo kiểu thiết kế truyền thống hướng lập trình mã lệnh:Để xây dựng một sản phẩm phần mềm gồm các bước sau:
Business analyst: Thu thập, phân tích yêu cầu nghiệp vụ, kinh doanh.
Functional analyst: Phân tích chức năng, dự thảo những chi tiết kỹ thuật
để xác định chức năng của hệ thống.
Technical analyst: Phân tích kỹ thuật, công nghệ, cấu hình hệ thống theo
các chức năng đã được xác định. Đưa ra tài liệu thiết kế kỹ thuật để lập trình.
Programming: Thực hiện việc viết chương trình, kiểm thử… để đưa ra
Có thể nhận thấy rằng, các yêu cầu kinh doanh đều thông qua 3 trong 4 bước trên trước khi sản phẩm phần mềm cuối cùng được đưa vào sử dụng. Tại mỗi bước, yêu cầu kinh doanh lại được đem ra thảo luận, thay đổi, vì vậy yêu cầu kinh doanh trên thực tế theo thời gian sẽ bị thay đổi, không đảm bảo đúng hoàn toàn với yêu cầu ban đầu.
Để khắc phục được hạn chế này, hệ thống BPMS với cách tiếp cận theo kiểu “Hướng tiến trình” cho phép các nhà kinh doanh có thể trực tiếp tham gia thiết kế các giải pháp Công nghệ thông tin (CNTT).
− Theo kiểu “Hướng tiến trình”: Với sự hỗ trợ của BPMS các nhà phân tích kinh
doanh, nghiệp vụ có thể thiết kế các tiến trình kinh doanh, nghiệp vụ ở mức cao với công cụ đồ họa, sau đó biểu đồ kinh doanh sẽ được tự động sinh mã chương trình và được thực thi mà không cần sự hỗ trợ của các nhà phát triển CNTT. Nhưng nếu thực sự cần thiết sự thì các nhà phát triển CNTT có thể làm việc trên biểu đồ kinh doanh đã được thiết kế, họ có thể những các đoạn mã ngôn ngữ kịch bản được hỗ trợ bởi BPMS (như BPEL) để bổ sung vào việc điều khiển tiến trình kinh doanh đó. Vì vậy mà khoảng cách giữa các nhà kinh doanh và phát triển công nghệ thông tin được giảm xuống tối thiểu.
Dưới đây là hình minh họa mô hình truyền thống và mô hình hướng tiến trình (Ghalimi và Madden, 2000):
Theo Silver (2006) một hệ thống BPMS ít nhất cần phải có các chức năng cơ bản sau:
− Thể hiện tiến trình làm việc của con người (Human Workflow);
− Khả năng tích hợp Framework (Intergration Framework);
− Máy cung cấp, phân tích nguyên tắc nghiệp vụ, kinh doanh (Business Rule Engine);
− Bộ giám sát, theo dõi các hoạt động kinh doanh (Business Activity Monitoring - BAM);
− Bộ phân tích tiến trình (Process Analystics);
− Xử lý ngoại lệ;
− Bộ mô hình hóa, mô phỏng (Modeling, Simulation)… Ưu điểm khi sử dụng hệ thống BPMS:
− BPMS giúp các nhà kinh doanh có thể tham gia chặt chẽ, gần hơn với thiết kế công nghệ thông tin.
− BPMS cho phép tích hợp con người, hệ thống và dữ liệu tham gia trong tiến trình kinh doanh, nghiệp vụ
− BPMS cung cấp mô phỏng hóa tiến trình kinh doanh, tối ưu hóa các tiến trình đó để đạt được kết quả tốt nhất theo mong đợi.
− BPMS cho phép theo dõi, kiểm soát, và cải tiến tiến trình kinh doanh.