Thiết kế tổng thể của ứng dụng

Một phần của tài liệu Ứng dụng ký pháp BPMN2.0 và nền tảng activiti trong tự động hóa quy trình nghiệp vụ (Trang 35)

Ứng dụng bao gồm hai module chính là module quản lý quy trình nghiệp vụ và module quản lý người dùng. Hình bên dưới mô tả các module trong hệ thống.

Hình 13: Thiết kế tổng thể của ứng dụng

Module quản lý quy trình nghiệp vụ sử dụng engine Activiti để quản lý các quy trình theo đặc tả BPMN 2.0. Quy trình nghiệp vụ có thể được định nghĩa bằng các ứng dụng khác nhau của các bên thứ ba khác nhau tuân theo chuẩn BPMN 2.0. Đầu ra là một file duy nhất định nghĩa toàn bộ quy trình. File này sẽ được cài đặt và lưu trữ vào hệ thống thông qua module quản trị. Sau khi cài đặt định nghĩa của một quy trình người dùng có thể khởi động quy trình đó thông qua module danh sách công việc. Module này cung cấp giao tiếp cho phép người dùng có thể tham gia vào quy trình nghiệp vụ. Giao tiếp của nó

cơ bản bao gồm giao diện khởi động một quy trình nghiệp vụ, giao diện duyệt danh sách các tác vụ và giao diện thực thi các tác vụ. Module quản lý cho phép người quản lý giám sát được tiến độ thực thi của một quy trình, nhìn thấy các vấn đề trong quá trình thực thi. Module báo cáo cung cấp các báo cáo tổng hợp cho biết trạng thái hoạt động của hệ thống (ví dụ báo cáo tổng hợp về tiến độ thực thi các quy trình nghiệp vụ thông qua đó người quản lý có thể biết khối lượng công việc đã hoàn thành, chưa hoàn thành và đang bị tạm dừng,…).

Module quản lý người dùng, vai trò và nhóm cho phép quản lý người dùng, phân quyền người dùng theo vai trò và theo nhóm. Do các tác vụ trong quy trình nghiệp vụ được giao theo vai trò nên việc quản lý vai trò là bắt buộc. Để thuận tiện cho việc quản lý người dùng chúng ta có thể bổ sung thêm chức năng quản lý nhóm. Khi một nhóm được gán một vai trò thì tất cả người dùng trong nhóm đều có vai trò đó.

Ngoài ra giao tiếp với các hệ thống khác được hỗ trợ thông qua dịch vụ web. Giao tiếp với CSDL được quản lý bằng công nghệ Hibernate.

2.2.2.1. Tương tác người dùng

Các trợ giúp của ứng dụng đối với người dùng tham gia vào quy trình nghiệp vụ đòi hỏi phải có một giao diện danh sách công việc cho phép quá trình phối hợp chạy quy trình từ bước khởi tạo, chờ đợi đến khi các tác vụ thao tác thủ công được hoàn thành. Người dùng nhìn thấy và thực thi các tác vụ đang chờ xử lý trên màn hình giao diện thân thiện được thiết kế sao cho dễ sử dụng và và thao tác nhanh nhất. Hình dưới thể hiện giao diện danh sách công việc của ứng dụng.

Hình 14: Giao diện quản lý công việc

Giao diện quản lý công việc chia thành bốn vùng cơ bản hỗ trợ các thao tác cơ bản của quy trình. Giao diện này được thiết kế sao cho các thao tác với quy trình được quản lý tập trung. Vùng các công việc chưa giao liệt kê danh sách các tác vụ chưa được giao, các tác vụ được nhóm vào theo từng vai trò; tại đây người dùng có thể tiếp nhận, hủy bỏ hoặc giao tác vụ cho người khác thực hiện. Vùng các công việc cá nhân liệt kê các công việc do bản thân người dùng đã tiếp nhận và đang chờ xử lý, từ đây người dùng có thể chuyển hướng sang các module xử lý nghiệp vụ để thực thi tác vụ. Vùng các công việc trong ngày liệt kê danh sách tác vụ mà người dùng phải hoàn thành trong ngày. Vùng cuối cùng liệt kê các quy trình đã được cài đặt trên hệ thống, đây là nơi khởi tạo các thể hiện của quy trình.

Để cài đặt giao diện như trên, ứng dụng sử dụng các API của Activiti để giao tiếp với engine. Dưới đây chỉ ra kịch bản hoạt động của một quy trình cài đặt trên ứng dụng.

Hình 15: Tương tác giữa ứng dụng và engine trong quá trình chạy của một quy trình Một lời gọi tới RuntimeService để bắt đầu quy trình với tham số là định danh của quy trình và các dữ liệu liên quan. Danh sách các tác vụ giao cho người dùng hoặc vai trò mà người dùng đó tham gia sẽ được lấy ra bằng lời gọi queryTask() tới TaskService. Khi người dùng chọn một trong số các tác vụ đó, gọi getTaskDetail() để lấy ra đầy đủ dữ liệu của tác vụ. Khi người dùng tiếp nhận và hoàn thành một tác vụ thì tương ứng gọi hàm claim() và hàm complete().

Trong hầu hết các trường hợp, định nghĩa quy trình sẽ không chỉ chính xác ai thực hiện tác vụ mà tác vụ thường được giao theo vai trò. Những người cùng vai trò đều có thể

<<application>> GUI <<engine>> TaskService <<engine>> RuntimeService startProcessInstance() assign() queryTask() getTaskDetail() claim() complete() completeProcessInstance()

tiếp nhận và thực hiện tác vụ giao cho vai trò đó. Vì vậy trong phần công việc chưa giao, các tác vụ được nhóm lại theo vai trò để thuận tiện cho thao tác.

Do công việc được quản lý theo vai trò nên ứng dụng cần có cơ chế để kiểm soát quyền thực thi của người dùng. Ở đây người dùng chỉ được nhìn thấy các tác vụ giao cho vai trò mà người dùng tham gia. Trong xuốt thời gian tồn tại của quy trình, một tác vụ có thể chuyển tiếp một vài lần: từ vai trò sang người dùng, từ người dùng sang vai trò hoặc từ một người sang người khác có cùng vai trò. Các khả năng khác được liệt kê trong bảng dưới đây.

Kiểu Mô tả

Assign Tác vụ được giao cho một người hoặc một vai trò cụ thể

Claim Tác vụ được tiếp nhận bởi một người cụ thể trong vai trò

Yank Tác vụ đã tiếp nhận được chuyển sang cho người khác trong cùng vai trò.

Balk Tác vụ chuyển từ trạng thái đã tiếp nhận sang trạng thái đã giao; nói cách khác, người dùng quyết định không thực hiện tác vụ.

Bảng 3:Các hành động người dùng – vai trò

2.2.2.2. Tương tác với các hệ thống

Không có quy trình nào chạy độc lập, cộng thêm sự phụ thuộc vào con người, một quy trình gọi hoặc được gọi bởi các thành phần phần mềm khác nhau. Có bốn kiểu tương tác được chỉ ra dưới đây

Kiểu tương tác Mô tả

Nhận Quy trình nhận thông điệp từ hệ thống khác

Nhận – Gửi Quy trình nhận thông điệp từ một hệ thống khá và trả về một thông điệp phản hồi.

Gửi Quy trình gửi một thông điệp tới một hệ thống khác

Gửi – Nhận Một quy trình gửi thông điệp tới một hệ thống khác và chờ kết quả trả về

Bảng 4: Các kiểu tương tác

Các thành phần có thể được phân chia vào các miền bên trong và bên ngoài công ty. Các tương tác bên ngoài dựa trên dịch vụ web và tuân theo các giao thức tương tác. (adsbygoogle = window.adsbygoogle || []).push({});

Tương tác phần mềm nội bộ có thể là giao diện client/server đối với các hệ thống khác chạy trên mạng công ty.

Các tương tác với các hệ thống khác sẽ được cài đặt dưới dạng các dịch vụ web.

2.2.2.3. Giám sát và quản trị

Một hệ thống hoàn chỉnh cần có các cộng cụ quản trị và giám sát. Ứng dụng cung cấp màn hình giao diện cho phép quản trị hệ thống nhìn, điều chỉnh và thực thi các hành động quản lý; trong hầu hết các trường hợp, giao diện sử dụng một API quản lý chuẩn để giao tiếp với hệ thống đang chạy. Một giao diện BPM cần cho phép các thao tác giám sát các quy trình đang chạy, hủy các quy trình treo, cài đặt các định nghĩa quy trình mới, và gỡ bỏ các quy trình không còn cần thiết nữa. Sâu hơn, các ứng dụng BPM cũng cần hỗ trợ các nền tảng quản lý như SNMP hay JMX để đơn giản hóa khả năng thao tác. Với các giao tiếp đó, các giao diện tùy biến có thể được phát triển để đáp ứng được các yêu cầu khác nhau.

Bảng bên dưới mô tả các đối tượng cần quản lý và các dịch vụ cần thiết.

Các đối tượng cần quản lý Các dịch vụ cần thiết

Định nghĩa quy trình Tìm kiếm các định nghĩa quy trình đã cài đặt trên engine

Cài đặt thêm một định nghĩa quy trình lên hệ thống

Gỡ bỏ một cài đặt quy trình khỏi hệ thống

Các quy trình Tìm các quy trình có trên engine. Có thể lọc theo định nghĩa, ngày bắt đầu, ngày kết thúc, các giá trị biến của quy trình,…

Tạm dừng một quy trình Khôi phục một quy trình Chấm dứt một quy trình

Các hành động và danh sách tác vụ

Tìm các hành động và các tác vụ có trên hệ thống. Có thể lọc theo vai trò, ngày bắt đầu, ngày kết thúc,…

Người dùng và vai trò Thêm, trỉnh xửa hoặc xóa người dùng khỏi hệ thống

Thêm hoặc xóa vai trò khỏi hệ thống Thêm hoặc xóa người dùng khỏi vai trò

Ứng dụng Cấu hình các kết nối (ví dụ, các webservice, DB) có thể gọi hoặc được gọi từ các quy trình

Bảng 5: Các đối tượng cần giám sát và quản trị

Hình bên dưới thể hiện giao diện dành cho quản trị. Phần bên trái bao gồm các đường dẫn biểu diễn các đối tượng chính cần quản trị (người dùng, vai trò, các quy trình và các tác vụ). Khi người dùng chọn một đối tượng, màn hình bên trái hiển thị ra các tùy chọn cho đối tượng đó.

2.2.3. Lựa chọn nền tảng web và giải pháp cài đặt 2.2.3.1. Lựa chọn nền tảng web 2.2.3.1. Lựa chọn nền tảng web

Để xây dựng các ứng dụng web mạnh, chúng ta cần có những trợ giúp tối đa có thể, chúng ta cần sử dụng một framework cho ứng dụng web. Apache Struts 2 là một framework mới và hiện đại dành cho ứng dụng web. Struts 2 là thế hệ framework web thứ hai cài đặt mẫu thiết kế MVC (Model – View – Control). Một trong những mục tiêu chính của Struts là tích hợp mẫu thiết kế MVC từ thế giới của ứng dụng desktop sang một framwork ứng dụng web. Đây là bước đi quan trọng trong sự phát triển của các ứng dụng web có thiết kế tốt, bởi vì nó cung cấp một nền tảng cho phép dễ dàng đạt được mô hình MVC. Điều này cho phép lập trình viên không phải bỏ ra nhiều thời gian để xây dựng một kiến trúc tốt cho ứng dụng, thay vào đó họ có thể tập trung vào việc tìm ra giải pháp tốt nhất cho bài đoán nghiệp vụ.

Thiết kế ở mức cao của Struts 2 tuân theo mẫu thiết kế Model-View-Control. Mẫu thiết kế MVC đưa ra một sự phân biệt các thành phần khác nhau áp dụng cho ứng dụng web. Sự phân biệt các thành phần khác nhau cho phép chúng ta quản lý được sự phức tạp của các hệ thống phần mềm lớn bằng cách chia chúng thành các thành phần ở mức cao hơn. Mẫu thiết kế MVC xác định ba thành phần: model, view và controller. Trong Struts 2, chúng được cài đặt bởi action, result và FilterDispatcher như mô tả trong hình dưới [8].

Hình 17: Mô hình MVC của Struts 2 được hiện thực hóa bằng các thành phần core của framework: action, result và FilterDispatcher.

2.2.3.2. Giải pháp cài đặt

Giải pháp chuyển hướng từ màn hình công việc sang các module chức năng

Với cơ chế cài đặt lấy BPM làm trung tâm, các module chức năng (ví dụ module lập danh sách thí sinh, lập danh sách giám thị) được tích hợp vào luồng quy trình và được sử dụng để thực hiện một tác vụ cụ thể. Vấn đề cần giải quyết là từ hành động thực thi một tác vụ của người dùng trên màn hình quản lý công việc chương trình biết phải chuyển hướng người dùng sang module chức năng tương ứng.

Với đầu vào có được từ màn hình công việc là id của tác vụ cần thực thi, chúng ta cần biết tác vụ đó thuộc về định nghĩa quy trình nào, sử dụng dịch vụ TaskService của engine để lấy ra thông tin này.

Theo mô hình MVC của Struts2 để chuyển hướng sang các trang khác nhau đối tượng Model trả về các result khác nhau. Chúng ta có thể định nghĩa ra file cấu hình trong đó lưu thông tin tác vụ ứng với result nào như ví dụ dưới đây

Trong file struts.xml và file tiles.xml cấu hình với result trả về từ đối tượng model trang jsp tương ứng là gì

Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); ProcessDefinition processDefinition =

repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefini (adsbygoogle = window.adsbygoogle || []).push({});

tionId()).singleResult();

String taskDef = task.getTaskDefinitionKey(); String processDef = processDefinition.getKey();

<action name="examAction" class="vnu.edu.server.action.BghExamAction"

method="prepare">

<result type="tiles" name="createExam">examMng.page</result> <result type="tiles" name="createSubject">subjectMng.page</result> <result type="tiles" name="createStudent">studentMng.page</result> <result type="tiles" name="createSuperVisor">superVisor.page</result> <result type="tiles" name="backHome">back.home.page</result>

<result name="createStudentChangeSmClass">/WEB- INF/jsp/pages/deploy/exam/pickStudent.jsp</result> </action>

<root>

<processDefinition key="Quy_trinh_to_chuc_thi">

<taskDefinition key="Tao_Ky_Thi">createExam</taskDefinition>

<taskDefinition key="Lap_Mon_Thi_Ky_Thi">createSubject</taskDefinition> <taskDefinition key="Lap_Danh_Sach_Thi_Sinh">createStudent</taskDefinition> <taskDefinition key="Lap_Danh_Sach_Giam_Thi">createSuperVisor

</taskDefinition>

<taskDefinition key="Lap_Danh_Sach_Giam_Thi">createSuperVisor

</taskDefinition>

<taskDefinition key="Vao_Diem">createInputMark</taskDefinition> </processDefinition>

Hình dưới đây mô tả trình tự thực thi của hệ thống khi có thao tác thực thi công việc của người dùng

<tiles-definitions>

<definition name="examMng.page" extends="body.definition"> <put-attribute name="title" value="Tao ki thi" />

<put-attribute name="body" value="/WEB-

INF/jsp/pages/deploy/exam/mngExam.jsp" />

</definition>

<definition name="subjectMng.page" extends="body.definition"> <put-attribute name="title" value="Lap danh sach mon thi" />

<put-attribute name="body" value="/WEB-

INF/jsp/pages/deploy/exam/mngSubject.jsp" />

</definition>

<definition name="studentMng.page" extends="body.definition"> <put-attribute name="title" value="Lap danh sach thi sinh" />

<put-attribute name="body" value="/WEB-

INF/jsp/pages/deploy/exam/mngStudent2.jsp" />

</definition> </tiles-definitions>

Chương 3: Khảo sát và cài đặt một số quy trình nghiệp vụ

3.1. Tích hợp BPM vào các ứng dụng thông thường (adsbygoogle = window.adsbygoogle || []).push({});

Trên thực tế nhiều hệ thống đã được phát triển và đưa vào sử dụng tại các doanh nghiệp/tổ chức mà không đặt vấn đề về việc quản lý quy trình nghiệp vụ một cách tự động. Vì vậy một vấn đề quan trọng đặt ra là làm thế nào để tích hợp hệ thống BPM vào các hệ thống sẵn có một cách phù hợp với chi phí thấp nhất và hiệu quả cao nhất.

Vì sao cần tích hợp?

Một sự tích hợp hiệu quả giữa hệ thống BPM và ứng dụng thông thường sẽ mang lại hiệu quả rõ rệt đối với quy trình nghiệp vụ. Khi tích hợp với BPM, quy trình được chuẩn hóa và tối ưu hóa, quy trình được vận hành một cách tự động và chính xác, đảm bảo được sự tham gia của các thành phần trong quy trình từ đội ngũ nhân viên làm nghiệp vụ cho tới các chuyên gia và người quản lý. Kết quả là năng suất tăng lên, công việc được xử lý nhanh hơn, tốn ít công sức hơn.

3.1.1. Cơ chế tích hợp

Các ứng dụng khác nhau sử dụng các công nghệ khác nhau, do đó để tích hợp với hệ thống BPM có thể phải sử dụng các chiến lược và công nghệ khác nhau.

a. Ứng dụng lấy BPM làm trung tâm

Trong môi trường lấy BPM làm trung tâm, xử lý nghiệp vụ chỉ là một trong các hoạt động thủ công trong kịch bản của BPM. Khác với các hệ thống BPM độc lập, BPM trong môi trường ứng dụng được thiết kế và cấu trúc đặc biệt để tích hợp và cùng tồn tại với ứng dụng. Cần lưu ý rằng sự tích hợp này không, và không nên bao gồm xử lý giao dịch

Một phần của tài liệu Ứng dụng ký pháp BPMN2.0 và nền tảng activiti trong tự động hóa quy trình nghiệp vụ (Trang 35)