5.3.1Thiết kế các xử lý
Tố chức các activity
Các activity đƣợc thiết kế có tính kế th a lẫn nhau để có thể sử dụng lại các thuộc tính chung. Cấu trúc của các Activity đƣợc thể hiện ở sơ đồ sau:
93
Hình 5.3-Sơ đồ tổ chức các activity
ShapeNode là node cơ sở và đƣợc kế th a bới BasicNode và structurenode. Các BasicNode là các node cơ bản của BPEL và không thể chứa các node khác bên trong nó. Các structureNode là các node có cấu trúc và có thể chứa các BasicNode bên trong. Trong cấu trúc tiến trình BPEL thì BasicNode luôn luôn đƣợc chứa trong một node cấu trúc, và đƣợc coi nhƣ là các node xử lý của tiến trình.
Xử lý chỉnh sửa các thuộc tính của activity
Các Activity đều có những thuộc tính chung nhƣng một số lại có những thuộc tính riêng. Để xử lý cho việc chỉnh sửa thuộc tính các activity này chúng tôi thiết kế riêng cho mỗi lớp thuộc tính của activity một phƣơng thức Update và đƣợc kế th a t lớp basic properties. Sơ đồ sau mô tả cho cấu trúc của các activity properties:
94
Hình 5.4-Sơ đồ tổ chức các activity properties
Các basic properties đƣợc kế th a t ShapeNode, t ShapeNode ta có thể biết đƣợc nó là properties của activity nào. Mỗi activity properties sẽ có những phƣơng thức riêng của mình. Việc cập nhật các properties đƣợc gọi thông qua basicproperties. Mỗi activity properties đƣợc thiết kế một cửa số riêng để chỉnh sửa các thuộc tính của nó. Hình 5.11 là một ví dụ cho invoke properties:
Hình 5.5-Màn hình invoke properties Xử lý kéo thả các activity
Thao tác kéo thả là một thao tác cơ bản trong một BPEL Designer. Việc kéo thả các activity giúp ngƣời dùng thuận tiện hơn trong việc thiết kế các process của mình.
95
Hình 5.12 là một mẫu process đƣợc thiết kế t BPELfx Designer với thao tác kéo và thả các activity:
Hình 5.6-Process đƣợc thiết kế t BPELfx Designer
Để xử lý cho vấn đề cập nhật kích thức của process sau mỗi thao tác kéo thả chúng tôi thiết kế các thuộc tính của activity theo dạng động (dynamic). Sau mỗi lần thay đổi activity thì một phƣơng thức cập nhật kích thƣớc đƣợc gọi để cập nhật lại kích thƣớc thể hiện của process. Chi tiết cho xử lý này mời các các tham khảo trong source code đính kèm.
Xử lý phát sinh code
Phát sinh code là một yêu cầu quan trọng trong các BPEL Designer, t mô hình thiết kế hệ thống sẽ phát sinh ra BPEL code ở dạng xml và ngƣợc lại. Code phát sinh ra đƣợc lƣu trữ trong tập tin có phần mở rộng là ‟‟.bpel „‟. Có hai vấn đề chính cần giải quyết trong xử lý phát sinh code :
Khi ngƣời dùng kéo thả một activity vào process thì yêu cầu hệ thống phải phát sinh ra code cho activity đó trong trong process bên dƣới. Activity đƣợc phát
96
sinh ra phải đƣợc đặt đúng vị trí và đúng cấu trúc trong process đƣợc thể hiện trong designer.
Khi một process đƣợc mở t bpel file thì yêu cầu hệ thống phải đọc ra đƣợc cấu trúc của process bao gần các activity, các variable…. và thể hiện lại trên designer bằng mô hình.
Để giải quyết cho vấn đề trên chúng tôi đã thiết kế ra thƣ viện Model để phát sinh code trong quá trình kéo thảo các activity và ngƣợc lại. Thƣ viện này có nhiệm vụ đồng bộ giữa hai đối tƣợng đồ họa và code trong quá trình thiết kế. Ngoài ra các model này còn làm việc với các file wsdl. Hình 5.7 mô tả cho mẫu thiết kế này :
Hình 5.7-mẫu thiết kế xử lý phát sinh code Xử lý biên dịch chƣơng trình
97
Để xử lý biên dịch chúng em đã kế th a t thƣ viện biện dịch command line BpelC của ODE Apache để thiết kế ra một trình biên dịch riêng cho mình. Kết quả biên dịch sẽ đƣợc ghi vào file log, khi đã có đƣợc tập tin kết quả biên dịch chúng em sử dụng kết quả này để làm thông báo kiểm tra lỗi cú pháp cho hệ thống BPELfx Designer . Nếu không có lỗi cú pháp, sẽ có kết quả là biên dịch thành công. Còn nếu có lỗi cú pháp, kết quả chi tiết về lỗi (tại dòng) sẽ đƣợc thông báo.
5.3.2Thiết kế dữ liệu lưu trữ
Dữ liệu lƣu trữ của hệ thống đƣợc thiết kế ở hai dạng khác nhau. Dạng cơ sở dữ liệu quan hệ đƣợc dùng để lƣu trữ các thông tin của ngƣời dùng và project. Dạng dữ liệu xml đƣợc dùng để lƣu trữ các tiến trình bpel.
Dữ liệu lƣu trữ thông tin project
Đƣợc thiết kế ở dạng cơ sở dữ liệu quan hệ dùng để lƣu trữ thông tin về ngƣời dùng trong hệ thống và các thông tin về project của ngƣời dùng đó. Lƣợt đồ cơ sở dữ liệu đƣợc thiết kết nhƣ sau:
98
Thông tin các bảng đƣợc mô tả nhƣ sau: Bảng Account:
Thuộc tính Kiểu dữ liệu Khóa
AccountID Số nguyên Khóa chính
Name Chuỗi Sex Số nguyên Email Chuỗi Username Chuỗi Password Chuỗi Bảng 5.1-Bảng Account.
Mô tả: Bảng này dùng để lƣu trữ thông tin tài khoản của ngƣời dùng trong hệ thống bao gồm cả thành viên và admin của hệ thống. Bảng này chứa các thông tin cơ bản của ngƣời dùng nhƣ: Tên, Giới tính, Email, Tên Đăng Nhập, Mật Khẩu…..Mỗi ngƣời dùng có một AccountID dùng để phân biệt với ngƣời dùng khác
Bảng User:
Thuộc tính Kiểu dữ liệu Khóa
UserID Số nguyên Khóa chính
Active Số nguyên
Bảng 5.2-Bảng Account
Mô tả: là bảng dùng để lƣu trữ thông tin của user đƣợc phân biệt với admin của hệ thống. Thông tin chi tiết của mỗi user đƣợc lƣu trữ ở bảng account và đƣợc truy xuất thông qua khóa ngoại UserID. Thuộc tính active cho biết ngƣời dùng trong hệ thống có bị khóa hay không.
Bảng Admin:
Thuộc tính Kiểu dữ liệu Khóa
AccountID Số nguyên Khóa chính
99
Mô tả: bảng này dùng để lƣu trữ ngƣời dùng là quản lý của hệ thống, đƣợc dùng để phân biệt với ngƣời dùng là thành viên của hệ thống. Mỗi Admin có AccountID dùng để phân biệt. Thông tin chi tiết của admin đƣợc truy xuất qua bảng Account. Bảng Project:
Thuộc tính Kiểu dữ liệu Khóa
ProjectID Số nguyên Khóa chính
ProjectName Chuỗi
UserID Số nguyên Khóa ngoại tham chiếu
bảng User ProjectPath Chuỗi Description Chuỗi Package Chuỗi Published Số nguyên Bảng 5.4-Bảng Project
Mô tả: bảng này dùng để lƣu trữ thông tin của project, mỗi project đều có một thuộc tính ProjectID dùng để phân biệt, mỗi project thuộc về một ngƣời dùng duy nhất (UserID) và có một mô tả riêng (Description). Mỗi ngƣời dùng có thể có một hoặc nhiều project khác nhau. Mỗi project đƣợc lƣu trữ vào một thƣ mục riêng trong hệ thống và đƣợc truy xuất thông qua ProjectPath. Thuộc tính Published cho biết trạng thái của project là đang sẵn sàng hay đã bị khóa.
Bảng File
Thuộc tính Kiểu dữ liệu Khóa
FileID Số nguyên Khóa chính
ProjectID Số nguyên Khóa ngoại tham chiếu
bảng project
FileName Chuỗi
100
Mỗi project thì có thể có nhiều file khác nhau và đƣợc phân biệt thông qua thuộc tính FileID và có tên đại diện (FileName). Một File thuộc về duy nhất một project và một project thì có thể chứa nhiều file.
Bảng Url:
Thuộc tính Kiểu dữ liệu Khóa
Id Số nguyên Khóa chính
Pid Số nguyên Khóa ngoại tham chiếu bảng project
url Chuỗi
Uid Số nguyên Khóa ngoại tham chiếu bảng user
Bảng 5.6-Bảng Url
Mỗi tiến trình BPEL sau khi deploy sẽ có một url để truy xuất. Thông tin này đƣợc lƣu trữ vào bảng url. Mỗi tiến trình BPEL có một url duy nhất và thuộc về một project nào đó. Các url đƣợc phân biệt với nhau bằng thuộc tính ID.
Dữ liệu lƣu trữ các tiến trình BPEL
Mỗi tiến trình BPEL đƣợc lƣu trữ trong một tài liệu xml duy nhất và có phần mở rộng là „.bpel‟.
Cấu trúc của file BPEL nhƣ sau: 1 2 3 4 5 6 7 8 9 10 <process...> <partnerLinks> </partnerLinks> <variables> </variables> <faultHandlers> </faultHanders> <sequence> </sequence> </process>
Bảng 5.7-Cấu trúc lƣu trữ file BPEL
Tiến trình BPEL đƣợc định nghĩa theo dạng XML. Nội dung của tập tin XML này là một mô tả về logic của tiến trình cũng nhƣ các thông tin cần thiết khác (chẳng
101
hạn nhƣ các service cần import, các shema đã đƣợc sử dụng…) để có thể triển khai trên các BPEL Engine.
Khi một tiến trình BPEL đƣợc triển khai lên ODE Server thì một file deploy.xml đƣợc tạo ra dùng để mô tả cho tiến trình này, file deploy có cấu trúc nhƣ sau:
1 2 3 4 5 6 7 8 9 10 <deploy> <process name=" ">
<active>true</active>
<retired>false</retired>
<process-events generate="all"/>
<provide partnerLink="client">
<service name=" " port=" "/>
</provide> </process> </deploy>
Bảng 5.8-Cấu trúc lƣu trữ file deploy.xml
Thẻ process dùng để mô tả thông tin của process. Trong thẻ process thì có các thẻ con dùng để mô tả, <active> cho biết process đã đƣợc kích hoạt hay chƣa, <retired>
cho biết thời gian kết thúc hoạt động của tiến trình, mặc định là false. <provide partnerLink="client"> cho biết các PartnerLink của tiến trình.
5.3.3Thiết kế giao diện
Màn hình chính
102
Màn hình chính chia làm vùng khác nhau với các chức năng riêng biệt thuận lợi cho ngƣời dùng trong việc sử dụng.
Vùng 1: dùng hiển thị thông tin các project của ngƣời dùng bao gồm các tập tin của project nhƣ: tập tin bpel, tập tin deloy..
Vùng 2: là phần designer hiển thị nội dung chi tiết của một quy trình nghiệp vụ: cho phép hiển thi ở hai chế độ: designer và code
Vùng 3: đƣợc dùng để tổ chức các activity và các thông tin của tiến trình Màn hình tạo mới một file BPEL
Hình 5.10-Màn hình tạo mới một file trong project
Màn hình này cho phép ngƣời dùng tạo mới một file trong project của mình. Bao gồm các trƣờng sau:
Tên file: cho phép ngƣời dùng nhập tên file cần tạo
Loại file: trong một project BPEL thì có nhiều loại file đƣợc tạo ra nhƣ file bpel, file deloy, wsdl…. Thực chất các file này đều có dạng xml, tuy nhiên cấu trúc và chức năng của t ng loại file là khác nhau. Với quy mô của ứng dụng chúng tôi chỉ cho phép ngƣời dùng tạo ra hai loại file là bpel và deloy.xml
Projects: cho biết file đó thuộc project nào, một ngƣời dùng có khả năng tạo ra nhiều project khác nhau.
103
Màn hình tổ chức các activity
Các activity đƣợc phân loại theo ba nhóm cơ bản: Actions, Controls, Faults.
Actions: chứa các activity dạng thực thi nhƣ Invoke, Reply, Assign….
Controls: chứa các activity dạng điều khiển nhƣ If, Pick, While….
Faults: chứa các activity dùng để quản lý lỗi.
Hình 5.11-Màn hình tổ chức các activity Màn hình thêm mới một variable
Hình 5.12-Màn hình tổ chức các activity
104
Name: tên của variable. Message type: đƣợc lấy t tập tin wsdl mà ngƣời dùng import vào Màn hình tổ chức process Hình 5.13-Màn hình tổ chức các process : thêm mới : xóa : chỉnh sửa các thuộc tính Tab Partner Links: dùng để quản lý các partner links
Tab Varables: quản lý các variable. Tab correlation : dùng để quản lý các correlation trong process
Tab message exchanges: dùng để quản lý các message exchange.
Màn hình thêm mới PartnerLink
Hình 5.14-Màn hình thêm mới PartnerLink
Màn hình này cho phép ngƣời dùng thêm mới một Partnerlink bao gồm các trƣờng sau:
105
RoleName: Đƣợc load t Wsdl.Mỗi PartnerLink đƣợc gán cho 1 trong 2 vai trò: MyRole hoặc PartnerRole
106
Màn hình chỉnh sửa một invoke activity
Hình 5.15-Màn hình chỉnh sửa một invoke activity
Màn hình này cho phép ngƣời dùng chỉnh sửa thuộc tính của một invoke activity. Bao gồm các phần sau:
Phần 1: cho phép ngƣời dùng thay đổi tên của invoke activity
Phần 2: Thay đổi chi tiết các thuộc tính của invoke bao gồm partner link, operation, input variable, output variable.
Phần 3: cho phép sửa đổi điều kiện join nếu invoke đƣợc join với một activity khác trong một flow activity
Phần 4: Cho phép thay ngƣời dùng thiết lập các correlation set của invoke activity
107
Màn hình chỉnh sửa một assign activity
Hình 5.16-Màn hình chỉnh sửa một assign activity
Màn hình này cho phép ngƣời dùng chỉnh sửa các thuộc tính của assign activity, một assign activity cho phép gán hoặc khởi tạo các variables. Bằng cách sử dụng cặp thẻ from to đƣợc chứa trong thẻ copy,một assign activity có thể khởi tạo hoặc gán giá trị cho các biến đƣợc khai báo trong nó. Màn hình này bao gồm các trƣờng chính nhƣ sau:
Trường 1: cho phép validate các giá variable hay không
Trường 2: hiển thị các đối tƣợng copy
Trường 3: Thêm mới một đối tƣợng copy
Trường 4: Xóa một đối tƣợng copy
Trường 5: Di chuyển vị trí của một đối tƣợng copy.
Trường 6: Tƣơng tự trƣờng 5.
108
Trường 8: Cho phép chọn phƣơng thức copy. Copy t đối tƣợng nào đến đối tƣợng nào ( from, to).
Trường 9: Chọn các đối tƣợng để copy. Màn hình chỉnh sửa một reply activity
Hình 5.17-Màn hình chỉnh sửa một reply activity
Một reply activity cho phép process có thể trả về một giá trị, hoặc một thông điệp nào đó, các chức năng của màn hình này tƣơng tự nhƣ invoke activity.
Màn chỉnh sửa một receive activity
Hình 5.18-Màn hình chỉnh sửa một receive activity
Khi cần nhận các giá trị trả về t bênh ngoài ( có thể t process khác hoặc t ngƣởi dùng ) thì chúng ta sử dụng receive activity. Các chức năng của màn hình này tƣơng tự nhƣ màn hình chỉnh sửa thuộc tín của invoke activity.
109
Màn hình chỉnh sửa if activity
Hình 5.19-Màn hình chỉnh sửa một if activity
Cho phép ngƣời dùng chỉnh sửa các thuộc tính của if activity. Điều kiện trong if activity phải là một biểu thức ở dạng xPath.
Trường 1: chọn version của ngôn ngữ xPath
Trường 2: tạo mới một điều kiện
Trường 3: nhập biểu thức điều kiện
Màn hình chỉnh sửa một repeat Until activity
Hình 5.20-Màn hình chỉnh sửa một repeat until activity
Khi cần lặp lại một xử lý tới một điều kiện d ng nào đó thì chúng ta sử dụng Repeat util activity. Các chức năng của màn hình này tƣơng tự nhƣ màn hình của if activity.
110
Màn hình chỉnh sửa while activity
Hình 5.21-Màn hình chỉnh sửa một while activity
Màn hình nay cho phép ngƣời dùng chỉnh sửa thuộc tính của while activity.Các chức năng tƣơng tự nhƣ If activity
Màn hình chỉnh sửa foreach activity
Hình 5.22-Màn hình chỉnh sửa một foreach activity Màn hình này có chức năng chỉnh sửa các thuộc tính của foreach
Phần 1: chỉnh sửa tên của activity
Phần 2: chỉnh sửa tên của counter variable
Phần 3: chỉnh sủa các điều kiện d ng của count tervariable
111
Phần 5 : chỉnh sửa các tài liệu mô tả đính kèm Màn hình chỉnh sửa một validate activity
Hình 5.21-Màn hình chỉnh sửa một validate activity
Cho phép ngƣời dùng kiểm tra tính đúng đắng của các biến truyền vào bao gồm các biến input và các biến output.
Màn hình chỉnh sửa wait activity
Hình 5.23-Màn hình chỉnh sửa một wait activity
Màn hình này cho phép ngƣời dùng chỉnh sửa các thuộc tính của wait activity. Ngƣời dùng có thể thiết lập khoản thời gian(duration) hoặc mốc thời gian(date) để d ng tiến trình.
112
Phần 2: thay đổi thuộc tính của wait
Trường 2.1: chọn điều kiện d ng là khoản thời gian hay mốc thời gian
Trường 2.2: chọn version của Xpath
Trường 2.3: chọn dạng thể hiện của nhãn thời gian
Trường 2.4: nhập thời gian cho wait Màn hình chỉnh sửa throw activity
Hình 5.24-Màn hình chỉnh sửa một throw activity Màn hình import wsdl
Hình 5.25-Màn hình import wsdl
Màn hình này cho phép ngƣời dùng import file, đƣờng dẫn mô tả wsdl vào trong tiến trình.
113
Màn hình tạo file deploy.xml
Hình 5.26-Màn hình tạo file deploy.xml
Màn hình này giúp ngƣời dùng tạo file mô tả deploy.xml dể triển khai tiến trình lên