BPEL - Hướng dẫn nhanh
SOA hoặc Kiến trúc hướng dịch vụ là một cách tiếp cận kiến trúc, sử dụng công nghệ để trình bày các quy trình kinh doanh dưới dạng các dịch vụ có thể tái sử dụng.
Nó tập trung vào doanh nghiệp và cho phép chuyển đổi quy trình sang các cấp độ tích hợp, trực quan hóa, giám sát và tối ưu hóa mới.
Nó không phải là một công nghệ, nó là một khái niệm và một chiến lược sử dụng công nghệ để xây dựng các giải pháp tự động hóa kinh doanh.
Bây giờ chúng ta sẽ xem BPEL là gì và nó giúp ích như thế nào trong SOA.
BPEL là gì?
Ngôn ngữ Kỹ thuật Quy trình Kinh doanh là một công nghệ được sử dụng để xây dựng các chương trình trong kiến trúc SOA.
Thêm thành phần dịch vụ quy trình BPEL
Làm theo các bước sau để thêm Thành phần Dịch vụ Quy trình BPEL -
Từ Bộ điều hướng ứng dụng, chọn Tệp> Mới> Ứng dụng> Ứng dụng SOA.
Thao tác này sẽ khởi động trình hướng dẫn Tạo Ứng dụng SOA.
Trong hộp thoại Tên ứng dụng, hãy nhập tên ứng dụng vào trường Tên ứng dụng.
Trong trường Thư mục, nhập đường dẫn thư mục để tạo ứng dụng và dự án tổng hợp SOA.
Bấm tiếp.
Trong hộp thoại Tên dự án, hãy nhập tên vào trường Tên dự án.
Bấm tiếp.
Trong hộp thoại Cài đặt SOA dự án, chọn Kết hợp với Quy trình BPEL.
Nhấp vào Kết thúc.
Các tệp trong BPEL Composite
Tổng hợp BPEL chứa các tệp sau:
composite.xml - Tệp này mô tả toàn bộ tổ hợp tổng hợp của các dịch vụ, thành phần dịch vụ, tham chiếu và dây dẫn.
.bpel - Tệp này chứa tập hợp các hoạt động được thêm vào quy trình.
.componentType - Tệp này mô tả các dịch vụ và tham chiếu cho thành phần dịch vụ quy trình BPEL.
.wsdl - Tệp này xác định các thông báo đầu vào và đầu ra cho luồng quy trình BPEL này, giao diện khách hàng được hỗ trợ và các hoạt động cũng như các tính năng khác.
Các khái niệm được sử dụng trong quá trình BPL
Trong phần này, chúng ta sẽ tìm hiểu các khái niệm khác nhau liên quan đến quá trình BPL.
Dàn nhạc
-
Thường được sử dụng trong các quy trình kinh doanh tư nhân.
Một quy trình trung tâm (có thể là một dịch vụ Web khác) kiểm soát các dịch vụ Web liên quan.
Điều phối việc thực hiện các hoạt động khác nhau trên các dịch vụ web liên quan đến hoạt động.
- Các dịch vụ Web liên quan không "biết" (và không cần biết) rằng họ đang tham gia vào một quy trình tổng hợp và rằng họ đang tham gia vào một quy trình kinh doanh cấp cao hơn.
Chỉ có điều phối viên trung tâm của điều phối là nhận thức được mục tiêu này, vì vậy điều phối là tập trung với các định nghĩa rõ ràng về hoạt động và thứ tự gọi các dịch vụ Web.
Biên đạo múa
Không dựa vào điều phối viên trung tâm.
Mỗi dịch vụ Web tham gia vào quá trình biên đạo đều biết chính xác thời điểm thực hiện các hoạt động của nó và tương tác với ai.
Mỗi dịch vụ Web tham gia vào quá trình biên đạo đều biết chính xác thời điểm thực hiện các hoạt động của nó và tương tác với ai.
Tất cả những người tham gia biên đạo cần phải biết về quy trình kinh doanh, các hoạt động cần thực hiện, các thông điệp cần trao đổi và thời gian trao đổi thông điệp.
Trong chương này, chúng ta sẽ tìm hiểu về các hoạt động khác nhau tạo nên các khối xây dựng Các khối xây dựng của một thành phần dịch vụ quy trình BPEL.
Oracle BPEL Designer bao gồm một tập hợp các hoạt động mà bạn kéo vào một thành phần dịch vụ quy trình BPEL và nhấp đúp vào một hoạt động để xác định các thuộc tính và giá trị thuộc tính của nó.
Chỉ định hoạt động
Gọi hoạt động
Nhận hoạt động
Hãy để chúng tôi tìm hiểu thêm về hoạt động Gọi trong phần tiếp theo của chúng tôi.
Gọi hoạt động
Hoạt động gọi cho phép chỉ định một hoạt động sẽ được gọi cho dịch vụ (được xác định bởi liên kết đối tác của nó). Hoạt động có thể là một chiều hoặc phản hồi theo yêu cầu trên một cổng do dịch vụ cung cấp. Các biến có thể được tạo tự động trong một hoạt động gọi. Một hoạt động gọi gọi một dịch vụ đồng bộ hoặc khởi tạo một dịch vụ web không đồng bộ.
Hoạt động gọi mở một cổng trong quá trình gửi và nhận dữ liệu. Cổng này có thể được sử dụng thêm để gửi dữ liệu cần thiết và nhận phản hồi. Đối với các lệnh gọi lại đồng bộ, chỉ cần một cổng cho cả chức năng gửi và nhận.
Liên kết Đối tác được định nghĩa là trao đổi thông tin giữa tất cả các bên mà Quy trình BPEL tương tác.
Chúng là các tham chiếu đến các triển khai thực tế, qua đó quá trình BPEL tương tác với thế giới bên ngoài.
Liên kết đối tác được mời
Đây là các liên kết đến các dịch vụ được gọi bởi quy trình BPEL.
Liên kết Đối tác Khách hàng
Đây là những liên kết đến các dịch vụ có thể gọi một quy trình BPEL.
Thuộc tính liên kết đối tác
Trình chỉnh sửa thuộc tính liên kết đối tác cho phép bạn thiết lập liên kết đối tác cho các quy trình BPEL của mình. Với Trình chỉnh sửa thuộc tính liên kết đối tác, bạn có thể chỉ định những điều sau:
Name - Chỉ định tên của phần tử Invoke.
WSDL File - Cho biết tệp WSDL được liên kết với Liên kết đối tác.
Partner Link Type - Cho biết loại Liên kết đối tác được xác định trong WSDL.
My Role - Chỉ ra vai trò của bản thân quá trình kinh doanh.
Partner Pole - Cho biết vai trò của đối tác.
Documentation - Truy cập trên cửa sổ Thuộc tính.
Liên kết Đối tác được xác định trong tệp .bpel.
BPEL có thể tương tác với các dịch vụ theo ba cách sau:
- Các dịch vụ gọi quy trình BPEL
- Các dịch vụ được gọi bởi quy trình BPEL
- Các dịch vụ hoạt động theo cả hai cách
Trong chương này, chúng ta sẽ học cách tạo liên kết đối tác.
Thực hiện theo các bước được hiển thị bên dưới để tạo liên kết đối tác -
Trong SOA Composite Editor, bấm đúp vào thành phần dịch vụ quy trình BPEL.
Khi nhấp vào thành phần dịch vụ, Oracle BPEL Designer sẽ được hiển thị.
Trong Bảng thành phần, hãy mở rộng Dịch vụ BPEL.
Kéo Liên kết đối tác vào trang web Liên kết đối tác thích hợp.
Hoàn thành các trường cho hộp thoại này như đã đề cập ở trên trong Thuộc tính liên kết đối tác.
Bộ điều hợp cho phép tích hợp thành phần dịch vụ quy trình BPEL với quyền truy cập vào hệ thống tệp, máy chủ FTP, bảng cơ sở dữ liệu, hàng đợi cơ sở dữ liệu, ổ cắm, Java Message Services (JMS), MQ và Oracle E-Business Suite. Trình hướng dẫn này cho phép định cấu hình các loại bộ điều hợp được hiển thị trong hình bên dưới để sử dụng với thành phần dịch vụ quy trình BPEL -
Các loại bộ điều hợp
Hình ảnh sau đây cho thấy các loại bộ điều hợp khác nhau:
Xếp hàng nâng cao (AQ)
Để tương tác với một hàng đợi. AQ cung cấp một cơ chế linh hoạt để giao tiếp hai chiều, không đồng bộ giữa các ứng dụng tham gia.
Giám sát hoạt động kinh doanh của Oracle (BAM)
Để xuất bản dữ liệu đến các đối tượng dữ liệu trong Máy chủ Oracle BAM.
Cơ sở dữ liệu
Để tương tác với cơ sở dữ liệu Oracle và không phải Oracle thông qua JDBC và Oracle Business Intelligence (là một loại nguồn dữ liệu đặc biệt).
FTP và Tệp
Để trao đổi tệp (đọc và ghi) trên hệ thống tệp cục bộ và hệ thống tệp từ xa (thông qua việc sử dụng giao thức truyền tệp (FTP)).
Dịch vụ nhắn tin Java (JMS)
Để tương tác với JMS. Kiến trúc JMS sử dụng một giao diện khách cho nhiều kiến trúc máy chủ nhắn tin.
Hàng đợi tin nhắn (MQ)
Để trao đổi tin nhắn với hệ thống xếp hàng WebSphere MQ.
Ứng dụng Oracle
Để tương tác với bộ ứng dụng kinh doanh tích hợp của Ứng dụng Oracle.
Oracle B2B
Để duyệt siêu dữ liệu B2B trong kho lưu trữ dịch vụ siêu dữ liệu (MDS) và chọn định nghĩa tài liệu.
ổ cắm
Để mô hình hóa các giao thức chuẩn hoặc không chuẩn để giao tiếp qua các ổ cắm TCP / IP.
Tên dịch vụ bộ điều hợp
Cửa sổ Tên Dịch vụ nhắc nhập tên khi loại bộ điều hợp được chọn từ pallet. Đối với ví dụ này,File Adapterđã được lựa chọn. Khi trình hướng dẫn hoàn tất, tệp WSDL có tên dịch vụ này sẽ xuất hiện trong Bộ điều hướng ứng dụng cho thành phần dịch vụ quy trình BPEL (ví dụ này, có tênReadFile.wsdl). Tên dịch vụ phải là duy nhất trong dự án. Tệp cấu hình này bao gồm các cài đặt cấu hình bộ điều hợp được chỉ định với trình hướng dẫn này. Các tệp cấu hình khác (chẳng hạn như tệp tiêu đề và tệp dành riêng cho bộ điều hợp) cũng được tạo. Các tệp này được hiển thị trong Bộ điều hướng ứng dụng.
Trình giám sát quá trình BPEL trong Oracle BPEL Designer có thể được cấu hình bằng cách chọn Màn hình ở đầu Oracle BPEL Designer.
Ở giai đoạn này, Bộ điều hợp BAM Oracle cần được cấu hình.
Quy trình BPEL của khách hàng gửi một tin nhắn đến Quy trình BPEL của Dịch vụ và Quy trình BPEL của Dịch vụ không bắt buộc phải trả lời như thể hiện trong hình bên dưới -
Quy trình BPEL của khách hàng cần một liên kết đối tác hợp lệ và một hoạt động gọi.
Quy trình BPEL dịch vụ cần một hoạt động nhận.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác. Tệp WSDL như hình dưới đây.
<wsdl:portType name = "BPELProcess">
<wsdl:operation name = "process">
<wsdl:input message = "client:BPELProcessRequestMessage" />
<wsdl:output message = "client:BPELProcessResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
Quy trình BPEL của khách hàng gửi yêu cầu đến Quy trình BPEL của dịch vụ (d1 trong hình bên dưới) và nhận được phản hồi ngay lập tức (d2 trong hình bên dưới). Ví dụ: một người dùng yêu cầu đăng ký một mẫu đơn đăng ký nhập học trực tuyến vào một trường đại học và ngay lập tức nhận được email xác nhận rằng yêu cầu của họ đã được chấp nhận.
Quy trình BPEL của khách hàng cần một hoạt động gọi. Cổng phía máy khách gửi yêu cầu và nhận được phản hồi.
Quy trình BPEL dịch vụ cần hoạt động nhận để chấp nhận yêu cầu đến và hoạt động trả lời để trả lại thông tin được yêu cầu hoặc thông báo lỗi (lỗi; f1 trong hình bên dưới) được xác định trong WSDL.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác. Tệp WSDL như hình dưới đây.
WSDL File
<wsdl:portType name = "BPELProcess">
<wsdl:operation name = "process">
<wsdl:input message = "client:BPELProcessRequestMessage" />
<wsdl:output message = "client:BPELProcessResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
Quy trình BPEL của khách hàng gửi yêu cầu đến Quy trình BPEL của dịch vụ (d1 trong hình bên dưới) và đợi cho đến khi dịch vụ trả lời (d2 trong hình bên dưới).
Ví dụ: một người dùng yêu cầu đăng ký một mẫu đơn đăng ký nhập học trực tuyến vào một trường cao đẳng và yêu cầu đó không thể được xác nhận trừ khi nó được chấp nhận tại văn phòng tuyển sinh.
Quy trình BPEL của Khách hàng cần một hoạt động gọi để gửi yêu cầu và một hoạt động nhận để nhận phản hồi.
Quy trình BPEL dịch vụ cần một hoạt động nhận để chấp nhận yêu cầu đến và một hoạt động gọi để trả lại thông tin được yêu cầu hoặc lỗi.
Note - Sự khác biệt giữa phản hồi từ quá trình BPEL đồng bộ và không đồng bộ là dịch vụ đồng bộ sử dụng hoạt động trả lời để phản hồi lại máy khách và dịch vụ không đồng bộ sử dụng hoạt động gọi.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác. Tệp WSDL như hình dưới đây.
WSDL File
<wsdl:portType name = "BPELProcess">
<wsdl:operation name = "process">
<wsdl:input message = "client:BPELProcessRequestMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name = "BPELProcessCallback">
<wsdl:operation name = "processResponse">
<wsdl:input message = "client:BPELProcessResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
Quy trình BPEL của khách hàng gửi yêu cầu tới Quy trình BPEL của dịch vụ (d1 trong hình bên dưới) và đợi cho đến khi dịch vụ trả lời hoặc cho đến khi đạt đến một giới hạn thời gian nhất định, tùy điều kiện nào đến trước. (d2 trong hình dưới đây).
Ví dụ: một người dùng yêu cầu đăng ký một mẫu đơn đăng ký nhập học trực tuyến vào một trường đại học và yêu cầu này bị hủy bỏ nếu người dùng không nhận được trả lời xác nhận trong một khoảng thời gian nhất định.
Quy trình BPEL của khách hàng cần một hoạt động gọi để gửi yêu cầu và một hoạt động chọn với hai nhánh - một onMessage chi nhánh và một onAlarmchi nhánh. Nếu thư trả lời đến sau khi thời hạn đã hết, thư sẽ chuyển sang hàng đợi thư chết.
Quy trình BPEL dịch vụ cần một hoạt động nhận để chấp nhận yêu cầu đến và một hoạt động gọi để trả lại thông tin được yêu cầu hoặc lỗi.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Trong chương này, chúng ta sẽ tìm hiểu về các tương tác không đồng bộ với bộ hẹn giờ thông báo. Xem xét các điểm sau liên quan đến các tương tác không đồng bộ:
Quy trình BPEL của khách hàng gửi yêu cầu đến Quy trình BPEL của dịch vụ và chờ phản hồi, mặc dù thông báo được gửi sau khi bộ hẹn giờ hết hạn.
Quy trình BPEL của Khách hàng tiếp tục chờ phản hồi từ Quy trình BPEL của Dịch vụ ngay cả khi bộ hẹn giờ đã hết hạn.
Quy trình BPEL của khách hàng cần một hoạt động phạm vi có chứa một hoạt động gọi để gửi yêu cầu và một hoạt động nhận để chấp nhận trả lời. CáconAlarm xử lý của hoạt động phạm vi có giới hạn thời gian và hướng dẫn về những việc cần làm khi bộ hẹn giờ hết hạn.
Ví dụ: đợi 60 giây, sau đó gửi cảnh báo cho biết quá trình này diễn ra lâu hơn dự kiến.
Quy trình BPEL dịch vụ cần một hoạt động nhận để chấp nhận yêu cầu đến và một hoạt động gọi để trả lại thông tin được yêu cầu hoặc lỗi.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Trong chương này, chúng ta sẽ tìm hiểu về khái niệm Một yêu cầu và Nhiều phản hồi.
Quy trình BPEL của khách hàng gửi một yêu cầu duy nhất đến Quy trình BPEL của dịch vụ và nhận lại nhiều phản hồi.
Ví dụ: yêu cầu có thể là đặt hàng trực tuyến và phản hồi đầu tiên có thể là thời gian giao hàng ước tính, phản hồi thứ hai là xác nhận thanh toán và phản hồi thứ ba là thông báo rằng sản phẩm đã được giao. Trong ví dụ này, số lượng và loại phản hồi được mong đợi.
Quy trình BPEL của khách hàng cần một hoạt động gọi để gửi yêu cầu và một hoạt động tuần tự với ba hoạt động nhận.
Quy trình BPEL dịch vụ cần một hoạt động nhận để chấp nhận thông báo từ máy khách và một thuộc tính trình tự với ba hoạt động gọi, một hoạt động cho mỗi phản hồi.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Trong chương này, chúng ta sẽ tìm hiểu về khái niệm một yêu cầu và một trong hai phản hồi có thể có.
Quy trình BPEL của Khách hàng gửi một yêu cầu đến Quy trình BPEL của Dịch vụ và nhận được một trong hai phản hồi có thể có.
Ví dụ: yêu cầu có thể là đặt hàng trực tuyến một sản phẩm và phản hồi đầu tiên có thể là thông báo còn hàng hoặc thông báo hết hàng.
Quy trình BPEL của Khách hàng cần những điều sau:
Một hoạt động gọi để gửi yêu cầu.
Một hoạt động chọn có hai nhánh: một onMessage cho phản hồi còn hàng và hướng dẫn về những việc cần làm nếu nhận được tin nhắn trong kho.
Tin nhắn onMessage thứ hai cho phản hồi hết hàng và hướng dẫn về việc phải làm nếu nhận được thông báo hết hàng.
Quy trình BPEL dịch vụ cần một hoạt động nhận để chấp nhận thông báo từ khách hàng và một hoạt động chuyển đổi với hai nhánh, một với hoạt động gọi gửi thông báo trong kho nếu mặt hàng có sẵn và nhánh thứ hai với hoạt động gọi gửi thông báo hết hàng nếu hàng không có sẵn.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Trong chương này, chúng ta sẽ hiểu khái niệm về một yêu cầu, phản hồi bắt buộc và phản hồi tùy chọn.
Dịch vụ BPEL của Khách hàng gửi một yêu cầu đến Quy trình BPEL của Dịch vụ và nhận được một hoặc hai phản hồi.
Ở đây, yêu cầu là đặt một sản phẩm trực tuyến. Nếu sản phẩm bị chậm trễ, dịch vụ sẽ gửi tin nhắn cho khách hàng biết. Trong mọi trường hợp, dịch vụ luôn gửi thông báo khi hàng được vận chuyển.
Dịch vụ BPEL của khách hàng cần một hoạt động phạm vi chứa hoạt động gọi để gửi yêu cầu và một hoạt động nhận để chấp nhận câu trả lời bắt buộc. Đối với thông báo tùy chọn,onMessagexử lý của hoạt động phạm vi được đặt cùng với hướng dẫn về việc phải làm nếu nhận được thông báo tùy chọn (ví dụ: thông báo cho bạn rằng sản phẩm đã bị trì hoãn). Quy trình BPEL của Khách hàng chờ nhận được câu trả lời bắt buộc. Nếu câu trả lời bắt buộc được nhận trước, thì Quy trình BPEL sẽ tiếp tục mà không cần đợi câu trả lời tùy chọn.
Quy trình BPEL dịch vụ cần một hoạt động phạm vi có chứa hoạt động nhận và một hoạt động gọi để gửi thông điệp vận chuyển bắt buộc và phạm vi của onAlarm xử lý để gửi tin nhắn bị trì hoãn tùy chọn nếu bộ hẹn giờ hết hạn (ví dụ: gửi tin nhắn bị trì hoãn nếu mặt hàng không được giao trong 24 giờ).
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Bây giờ, chúng ta sẽ tìm hiểu khái niệm xử lý từng phần trong BPEL.
Quy trình BPEL của khách hàng gửi yêu cầu tới Quy trình BPEL của dịch vụ và nhận được phản hồi ngay lập tức, nhưng quá trình xử lý vẫn tiếp tục ở phía dịch vụ.
Mẫu này cũng có thể bao gồm nhiều lần gọi lại cảnh quay, sau đó là quá trình xử lý lâu dài hơn.
Ví dụ: khách hàng gửi yêu cầu mua gói kỳ nghỉ và dịch vụ sẽ gửi thư trả lời ngay lập tức xác nhận việc mua, sau đó tiếp tục đặt khách sạn, chuyến bay, thuê ô tô, v.v.
Quy trình BPEL của khách hàng cần một hoạt động gọi cho mỗi yêu cầu và một hoạt động nhận cho mỗi câu trả lời cho các giao dịch không đồng bộ hoặc chỉ một hoạt động gọi cho mỗi giao dịch đồng bộ.
Quy trình BPEL dịch vụ cần một hoạt động nhận cho mỗi yêu cầu từ khách hàng và một hoạt động gọi cho mỗi phản hồi. Khi các phản hồi hoàn tất, Quy trình BPEL của dịch vụ vì dịch vụ có thể tiếp tục xử lý, sử dụng thông tin thu thập được trong giao dịch để thực hiện các tác vụ cần thiết mà không cần khách hàng nhập thêm.
Như với tất cả các hoạt động của đối tác, tệp Ngôn ngữ Mô tả Dịch vụ Web (WSDL) xác định tương tác.
Chúng ta sẽ tìm hiểu về nhiều tương tác ứng dụng với BPEL trong chương này.
Khi có nhiều hơn hai ứng dụng tham gia vào một giao dịch.
Mẫu giao dịch A-to-B-to-C-to-A này có thể xử lý nhiều giao dịch cùng một lúc. Do đó, cần phải có một cơ chế để theo dõi thông điệp nào sẽ đi đến đâu.
Điều này có thể được xử lý bằng cách sử dụng WS-Addressing hoặc các bộ tương quan.
Chúng ta đã thảo luận trong một trong những chương trước rằng Dịch vụ Web đồng bộ là một, cung cấp phản hồi ngay lập tức cho một lời gọi.
Trong ảnh chụp màn hình được hiển thị bên dưới, chúng tôi đã tạo Quy trình BPEL đồng bộ có hoạt động nhận để chấp nhận yêu cầu từ người dùng. Hoạt động trả lời đồng thời gửi phản hồi trở lại.
Như đã thảo luận trước đây Dịch vụ web không đồng bộ là dịch vụ gửi yêu cầu đến dịch vụ web khác và chờ phản hồi.
Trong ảnh chụp màn hình được hiển thị bên dưới, chúng tôi đã tạo Quy trình BPEL không đồng bộ có hoạt động nhận để chấp nhận yêu cầu từ người dùng. Hoạt động gán thêm giá trị cho các phần tử khác nhau trong yêu cầu.
Tiếp theo, hoạt động gọi sẽ gọi Ứng dụng HelloWorld gửi phản hồi đồng thời và được ghi lại trong hoạt động nhận.
Hơn nữa, chúng ta có hoạt động gọi lại mà cuối cùng tạo ra đầu ra và gửi phản hồi không đồng bộ.
Nếu bạn bấm đúp vào receiveInput hoặc là callbackClient, bạn sẽ thấy mỗi người trong số họ chỉ có một biến.
receiveInput → inputVariable
callbackClient → outputVariable
Trong chương này, chúng ta sẽ hiểu cách hoạt động của dòng song song trong BPEL.
Hoạt động dòng là gì?
Một hoạt động dòng thường chứa nhiều hoạt động theo trình tự và mỗi chuỗi được thực hiện song song. Một hoạt động dòng chảy cũng có thể chứa các hoạt động khác.
Ví dụ: hai lệnh gọi lại không đồng bộ thực thi song song, do đó, một lệnh gọi lại không phải đợi lệnh gọi kia hoàn thành trước. Mỗi phản hồi được lưu trữ trong một biến toàn cục khác nhau.
Trong hoạt động luồng, mã BPEL xác định số nhánh song song. Tuy nhiên, số lượng chi nhánh yêu cầu thường khác nhau tùy thuộc vào thông tin có sẵn.
Hoạt động FlowN là gì?
Hoạt động flowN tạo ra nhiều luồng bằng giá trị của N, được xác định tại thời điểm chạy dựa trên dữ liệu có sẵn và logic trong quy trình. Có một sự gia tăng biến Chỉ mục mỗi khi tạo nhánh mới, cho đến khi biến chỉ mục đạt đến giá trị N.
Hoạt động flowN thực hiện các hoạt động trên một số phần tử dữ liệu tùy ý. Khi số lượng phần tử thay đổi, quá trình BPEL sẽ điều chỉnh cho phù hợp.
Các nhánh được tạo bởi flowN thực hiện các hoạt động giống nhau, nhưng sử dụng dữ liệu khác nhau. Mỗi nhánh sử dụng biến chỉ số để tra cứu các biến đầu vào. Biến chỉ mục có thể được sử dụng trong biểu thức XPath để lấy dữ liệu cụ thể cho nhánh đó.
BPEL áp dụng logic để thực hiện các lựa chọn thông qua phân nhánh có điều kiện. Hai hành động khác nhau dựa trên phân nhánh có điều kiện được hiển thị bên dưới:
Chuyển đổi hoạt động
Trong phương pháp này, bạn thiết lập hai hoặc nhiều nhánh, với mỗi nhánh ở dạng biểu thức XPath. Nếu biểu thức là true, thì nhánh được thực thi. Nếu biểu thức là false, thì quá trình BPEL chuyển sang điều kiện nhánh tiếp theo, cho đến khi nó tìm thấy điều kiện nhánh hợp lệ, gặp một nhánh khác hoặc hết nhánh. Nếu có nhiều hơn một điều kiện nhánh là đúng, thì BPEL thực thi nhánh đúng đầu tiên.
Trong khi Hoạt động
Bạn có thể sử dụng hoạt động trong khi để tạo vòng lặp trong khi để chọn giữa hai hành động.
Để hiểu cách sử dụng xử lý lỗi, chúng ta cần tìm hiểu kiến trúc cơ bản của Service Composite trong Oracle SOA Suite.
Service components- Quy trình BPEL, Quy tắc kinh doanh, Nhiệm vụ của con người, Người hòa giải. Chúng được sử dụng để xây dựng một ứng dụng tổng hợp SOA.
Binding components - Thiết lập kết nối giữa SOA composite và thế giới bên ngoài.
Services - Cung cấp một điểm vào ứng dụng tổng hợp SOA.
Binding - Xác định các giao thức giao tiếp với dịch vụ như SOAP / HTTP, bộ điều hợp JCA, v.v.
WSDL - Xác định định nghĩa dịch vụ của một dịch vụ web.
References - Cho phép ứng dụng tổng hợp SOA gửi tin nhắn đến các dịch vụ bên ngoài
Wires - Cho phép kết nối giữa các thành phần dịch vụ.
Các loại lỗi
Bây giờ chúng ta hãy xem các loại lỗi khác nhau.
Lỗi kinh doanh
Xảy ra khi ứng dụng thực hiện hoạt động THROW hoặc INVOKE nhận được lỗi dưới dạng phản hồi. Tên lỗi được chỉ định bởi thành phần dịch vụ quy trình BPEL. Trình xử lý lỗi sử dụng Tên lỗi và biến Lỗi sẽ bắt lỗi này.
Lỗi thời gian chạy
Điều này được ném bởi hệ thống. Những lỗi này có liên quan đếnRunTimeFaultMessage và được bao gồm trong
http://schemas.oracle.com/bpel/extensionnamespace.
Các cách xử lý lỗi
Trong phần này, chúng ta sẽ tìm hiểu về các cách xử lý lỗi khác nhau.
Hoạt động ném
Hoạt động ném ném lỗi một cách rõ ràng. Khối bắt bắt lỗi này và các hành động tương ứng sẽ được thực thi do đó.
Sử dụng hoạt động ném, bạn có thể đưa ra các lỗi kinh doanh & trong phạm vi đã tạo, bạn có thể bắt lỗi này và chuyển hướng đến người gọi (người tiêu dùng) để thực hiện hành động.
Thay vì cách tiếp cận ở trên, bạn ném cùng một lỗi bị bắt trong hoạt động bắt của phạm vi đã tạo. Trong phạm vi chính, bạn có thể bắt lỗi này bằng cách sử dụng hoạt động catchall.
Khung xử lý lỗi (EHF)
2 tệp chính được sử dụng trong EHF là:
- Fault-Policy.xml
- Fault-Bindings.xml
Bất cứ khi nào quá trình BPEL gặp lỗi, EHF sẽ kiểm tra xem lỗi có tồn tại trong các tệp Fault-Bindings.xml hay không. Nếu vậy, hành động trong tệp Fault-Policy.xml sẽ được thực hiện. Nếu hành động không được tìm thấy, lỗi sẽ được ném ra và nó sẽ được xử lý trong khối bắt.
Khung quản lý lỗi (Fault-Policy.xml và Fault-Bindings.xml) được lưu giữ bên trong SOA Composite.
Các trình xử lý lỗi như bắt và lấy catchall nằm bên trong một BPEL để bắt tất cả các lỗi, nhưng fault policies will only be executed when an invoke activity fails.
Trong chương này, chúng ta sẽ thấy các tình huống khác nhau liên quan đến việc gửi lại quy trình bị lỗi.
Tình huống A
Mã BPEL sử dụng chính sách lỗi và lỗi được xử lý bằng hoạt động “hoặc sự can thiệp của con người”. Sau đó, lỗi được đánh dấu là Có thể khôi phục và trạng thái phiên bản được đặt thành “Đang chạy”.
Tình huống B
Mã BPEL sử dụng chính sách lỗi và lỗi được phát hiện và xử lý lại bằng cách sử dụng hành động "hoặc tái phát lại lỗi". Sau đó, lỗi được đánh dấu là Có thể khôi phục và trạng thái phiên bản được đặt thành “Đã lỗi”; miễn là lỗi là lỗi có thể khôi phục được (giống như không có URL).
Có một số phương pháp để kết hợp Java và mã Java EE trong các quy trình BPEL. Sau đây là một số phương pháp quan trọng -
Gói dưới dạng dịch vụ Giao thức truy cập đối tượng đơn giản (SOAP)
Nhúng các đoạn mã Java vào một quy trình BPEL với thẻ bpelx - exec
Sử dụng mặt tiền XML để đơn giản hóa thao tác DOM
Sử dụng bpelx - các phương thức tích hợp sẵn trên thực thi
Sử dụng mã Java được bao bọc trong giao diện dịch vụ
Hoạt động Nhúng Java cho phép chúng tôi thêm các hoạt động trong một quy trình BPEL. Chúng ta có thể viết một đoạn mã Java bằng cách sử dụng các thư viện JDK tiêu chuẩn, các API BPEL, các Lớp Java tùy chỉnh và bên thứ ba được bao gồm trong các tệp JAR trong các tổng hợp SCA đã triển khai (trong thư mục SCA-INF / lib) và Các Lớp Java và các thư viện có sẵn trên Classpath cho SOA Thời gian chạy bộ.
Java Embedding có nghĩa là chức năng ẩn bên trong, theo một cách không tách rời. Mã Java khó duy trì. Bằng cách nhúng Java vào BPEL (theo hướng XML), chúng tôi bắt đầu trộn công nghệ, đòi hỏi các kỹ năng khác nhau cũng như việc sắp xếp và giải nén đối tượng XML sang Java đắt tiền.
Các trường hợp sử dụng tốt nhất cho Java Embedding dường như là để ghi nhật ký / truy tìm nâng cao hoặc cho các xác nhận / biến đổi đặc biệt. Tuy nhiên, không được thay thế các khả năng tích hợp của động cơ BPEL cũng như các thành phần khác trong SOA Suite 11g và bộ điều hợp đi kèm với nó.
XPath chủ yếu được sử dụng để thao tác các XML trong quy trình BPEL. Có một số hàm Xpath có giá trị có thể được sử dụng để thao tác với XML. Hãy cho chúng tôi xem các chức năng bên dưới.
bpel: getVaribleData (varName, partName, xpathStr)
Điều này có thể được sử dụng để trích xuất một tập hợp các phần tử từ một biến, sử dụng biểu thức XPath.
<bpel:copy>
<bpel:from>
<![CDATA[count(bpel:getVariableData(‘$Variable','$partName')/ns:return)]]>
</bpel:from>
<bpel:to variable = "itemNumber">
</bpel:to>
</bpel:copy>
bpel: getLinkStatus ()
Điều này có thể được sử dụng để đánh giá và trả về Boolean cho dù một liên kết cụ thể đang hoạt động hay không hoạt động.: getVariableProperty (chuỗi, chuỗi)
Điều này rất hữu ích trong việc trích xuất các thuộc tính trong Biến.: doXSLTTransform ()
Điều này thực hiện các phép biến đổi XSLT.chuỗi ()
Điều này có thể được sử dụng để trích xuất nội dung văn bản ra khỏi các phần tử thay vì sử dụng / text ().chiều dài chuỗi()
Hàm này dùng để tính độ dài của chuỗi. Nhưng toán tử! = Dường như không hoạt động với đầu ra từ hàm này. Vì vậy, bạn có thể sử dụng> hoặc <thay vì sử dụng! =.Giá trị Boolean
Bạn có thể gán các giá trị boolean bằng hàm boolean XPath.
<assign>
<!-- copy from boolean expression function to the variable -->
<copy>
<from expression = "true()"/>
<to variable = "output" part = "payload" query="/result/approved"/>
</copy>
</assign>
Chỉ định ngày hoặc giờ
Bạn có thể gán giá trị hiện tại của một trường ngày hoặc giờ bằng cách sử dụng hàm getCurrentDate, getCurrentTime hoặc getCurrentDateTime của Oracle BPEL XPath.
<!-- execute the XPath extension function getCurrentDate() -->
<assign>
<copy>
<from expression = "xpath20:getCurrentDate()"/>
<to variable = "output" part = "payload"
query = "/invoice/invoiceDate"/>
</copy>
</assign>
Nối các chuỗi
Thay vì sao chép giá trị của một biến chuỗi (hoặc một phần hoặc trường biến) sang một biến khác, trước tiên bạn có thể thực hiện thao tác với chuỗi, chẳng hạn như nối nhiều chuỗi.
<assign>
<!-- copy from XPath expression to the variable -->
<copy>
<from expression = "concat('Hello ',
bpws:getVariableData('input', 'payload', '/p:name'))"/>
<to variable = "output" part = "payload" query = "/p:result/p:message"/>
</copy>
</assign>
Gán chữ viết chuỗi
Bạn có thể gán các ký tự chuỗi cho một biến trong BPEL.
<assign>
<!-- copy from string expression to the variable -->
<copy>
<from expression = "'GE'"/>
<to variable = "output" part = "payload" query = "/p:result/p:symbol"/>
</copy>
</assign>
Gán giá trị số
Bạn có thể gán giá trị số trong biểu thức XPath.
<assign>
<!-- copy from integer expression to the variable -->
<copy>
<from expression = "100"/>
<to variable = "output" part = "payload" query = "/p:result/p:quantity"/>
</copy>
</assign>
Note - Một số hàm XSLT đã được sử dụng để chuyển đổi một tài liệu XML.
Tương quan BPEL khớp các thông báo gửi đến với một phiên bản quy trình cụ thể. Khi bạn cần liên kết dữ liệu cụ thể với một trường hợp cụ thể của quy trình kinh doanh, bạn sử dụng tính tương quan.
Ví dụ: trong khi tạo quy trình xác minh số tài khoản và kiểm tra hạn mức tín dụng của tài khoản. Khi được xác minh, quy trình thực hiện một cuộc gọi đến một hệ thống khác để kiểm tra hàng tồn kho và nếu mặt hàng còn trong kho, sẽ tạo ra một đơn đặt hàng. Làm thế nào để đơn đặt hàng biết được tài khoản nào sẽ được ghi nợ? Câu trả lời cho câu hỏi này là sự tương quan.
Bộ tương quan
Các tập hợp tương quan được sử dụng để xác định duy nhất các trường hợp quy trình. Bạn cung cấp cho mỗi tập hợp tương quan với một tên duy nhất và sau đó xác định nó theo một hoặc nhiều thuộc tính. Mỗi thuộc tính có một tên và một kiểu (ví dụ: chuỗi hoặc số nguyên).
Bí danh tài sản
Bí danh thuộc tính cho mỗi thuộc tính trong tập hợp tương quan cần được xác định. Bí danh thuộc tính là một ánh xạ liên kết thuộc tính với các giá trị đầu vào hoặc đầu ra.
Điểm quan trọng
Hãy xem xét các điểm quan trọng sau liên quan đến Correlation Sets and Message Aggregation -
Một quy trình có nhiều hơn một hoạt động nhận hoặc chọn phải có một bộ tương quan.
Các bộ tương quan được khởi tạo với các giá trị từ các thông điệp gửi đến hoặc gửi đi của quá trình.
Nếu bạn có các nhóm thư được liên kết với nhau với một quy trình cụ thể, bạn có thể thiết lập một hoặc nhiều nhóm tương quan để xử lý.
Các dịch vụ web không đồng bộ thường mất nhiều thời gian để trả lại phản hồi và như vậy, thành phần dịch vụ quy trình BPEL phải có thể hết thời gian chờ hoặc từ bỏ việc chờ đợi và tiếp tục với phần còn lại của quy trình sau một khoảng thời gian nhất định. Bạn có thể sử dụng hoạt động chọn để định cấu hình luồng BPEL để đợi trong một khoảng thời gian nhất định hoặc để tiếp tục thực hiện các nhiệm vụ của nó. Để đặt khoảng thời gian hết hạn cho thời gian, bạn có thể sử dụng hoạt động chờ. Để quản lý tin nhắn, các sự kiện có thể được sử dụng đặc biệt khi quy trình kinh doanh đang chờ các cuộc gọi lại từ các dịch vụ Web của đối tác.
Sự kiện
BPEL hỗ trợ hai loại sự kiện -
Sự kiện tin nhắn
Các sự kiện này được kích hoạt bởi các tin nhắn đến thông qua lệnh gọi thao tác trên các loại cổng.
Sự kiện báo động
Những sự kiện này liên quan đến thời gian và được kích hoạt sau một khoảng thời gian nhất định hoặc tại một thời điểm cụ thể.
Tuy nhiên, thông thường, sẽ hữu ích hơn nếu đợi nhiều hơn một tin nhắn, trong đó chỉ một tin nhắn xuất hiện.
Sự kiện cảnh báo rất hữu ích khi bạn muốn quá trình chờ cuộc gọi lại trong một khoảng thời gian nhất định, chẳng hạn như 15 phút.
Nếu không nhận được cuộc gọi lại nào, quy trình tiếp tục như đã thiết kế.
Hữu ích trong các kiến trúc hướng dịch vụ được kết hợp lỏng lẻo, nơi bạn không thể dựa vào các dịch vụ Web luôn sẵn sàng.
Chọn hoạt động
Hoạt động hái có 2 nhánh -
onMessage - mã trên nhánh này bằng mã nhận phản hồi trước khi thời gian chờ được thêm vào.
onAlarm - điều kiện này có mã cho thời gian chờ một phút.
Chờ Hoạt động
Hoạt động chờ đợi cho phép một quá trình đợi trong một khoảng thời gian nhất định hoặc cho đến khi đạt đến giới hạn thời gian. Phải chỉ định chính xác một trong các tiêu chí hết hạn.
Quy trình BPEL có thể được sử dụng cho dịch vụ thông báo. Quy trình có thể được thiết kế để gửi những điều sau:
- tin nhắn thoại
- nhắn tin tức thì (IM) hoặc
- thông báo dịch vụ tin nhắn ngắn (SMS)
Đối với các dịch vụ được đề cập ở trên, bạn có thể định cấu hình kênh cho tin nhắn đến và đi.
Các cảm biến tổng hợp trong ứng dụng SOA cung cấp khả năng xác định các trường có thể theo dõi trên tin nhắn và cho phép bạn tìm một trường hợp tổng hợp cụ thể bằng cách tìm kiếm một trường hoặc các trường trong tin nhắn. Ví dụ, một cảm biến có thể được xác định cho một số đơn hàng trong một tin nhắn, do đó cho phép chúng tôi tìm ra trường hợp tìm thấy số đơn hàng được đề cập.
Cảm biến tổng hợp có thể được xác định trong ứng dụng SOA theo một số thành phần -
Thành phần dịch vụ (dịch vụ tiếp xúc)
Thành phần tham chiếu (tham chiếu bên ngoài)
Dàn xếp hoặc thành phần BPEL đã đăng ký sự kiện kinh doanh (xuất bản sự kiện không được có cảm biến)
Các cách khác nhau để xác định cảm biến tổng hợp
Có nhiều cách khác nhau để xác định cảm biến tổng hợp -
- Bằng cách chỉ định một biến hiện có làm cảm biến.
- Bằng một biểu thức với sự trợ giúp của trình tạo biểu thức.
- Bằng cách sử dụng các thuộc tính (ví dụ: thuộc tính tiêu đề thư).
Cảm biến trong Trình quản lý doanh nghiệp
Việc xác định cảm biến cho phép tìm kiếm nhanh dữ liệu trong một phiên bản tổng hợp trong EM Console.
Trong bảng điều khiển EM Console, người dùng có thể tìm kiếm các phiên bản theo tên và giá trị cảm biến.
Trong tab “Các trường hợp dòng chảy”, bạn có thể chọn cảm biến từ menu thả xuống và có thể sử dụng các giá trị giống như ký tự đại diện cho giá trị cảm biến.
Các hoạt động mới đã được thêm vào trong 2.0 thay thế các hoạt động trong 1.1.
<forEach>
Hoạt động này giúp lặp lại tập hợp các hoạt động. Hoạt động thay thế hoạt động FlowN trong phiên bản BPEL 1.1.
<repeatUntil>
Hoạt động này được sử dụng nếu phần thân của một hoạt động phải được thực hiện ít nhất một lần. Điều kiện biểu thức XPath trong hoạt động repeatUntil được đánh giá sau khi phần nội dung của hoạt động hoàn thành.
<if> - <elseif> - <else>
Hoạt động này thay thế hoạt động chuyển đổi trong BPEL 2.0. Hoạt động cho phép bạn xác định hành vi có điều kiện cho các hoạt động cụ thể để quyết định giữa hai hoặc nhiều nhánh. Chỉ một hoạt động được chọn để thực hiện từ một tập hợp các nhánh.
<compensateScope>
Hoạt động này giúp bù đắp phạm vi con được chỉ định.
<rethrow>
Hoạt động này đã được thêm vào trình xử lý lỗi. Nó cho phép bạn thực hiện lại một lỗi ban đầu được bắt bởi trình xử lý lỗi kèm theo ngay lập tức.