Làm quen với Logic Apps

Logic Apps giúp bạn xây dựng, lập lịch và tự động hóa workflows để bạn có thể tích hợp apps, data, systems, và các dịch vụ với nhau, bất kể nó nằm trên cloud hay on premises. Để làm quen với logic app, trong bài này, mình sẽ hướng dẫn các bạn tạo 1 logic app đơn giản để lấy copy data từ database 1 sang database 2.
Trong bài hướng dẫn này, bạn sẽ:
  • Tạo 1 logic app rỗng
  • Dùng Time Trigger để copy data từ stored procedure sp_GetPeople, sau đó push data vào Service Bus.
  • Dùng 1 LA khác để nhận message từ Service Bus, sau đó đưa vào database 2.

Trước khi đi vào ví dụ, bạn cần làm quen với 1 số khái niệm:
  • Workflow là 1 giao diện đồ họa bao gồm các step trong business process. được bắt đầu từ 1 event “trigger”.
  • Trigger là 1 sự kiện để bắt đầu 1 workflow dựa trên 1 số sự kiện đặc biệt như 1 record được insert vào database, time trigger, hoặc đơn giản là có 1 message được thêm vào queue…
  • Parameters được dùng để lưu lại các giá trị trong workflow.
  • Connectors được định nghĩa dùng để kết nối các process.
  • Action là các bước được thêm vào sau trigger.

Chuẩn bị dữ liệu

Đầu tiên, bạn cần tạo 2 database: Database 1 và database 2. Sau đó tạo 2 table giống nhau với schema:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[People](
 [PersonID] [int] NULL,
 [LastName] [varchar](255) NULL,
 [FirstName] [varchar](255) NULL,
 [Address] [varchar](255) NULL,
 [City] [varchar](255) NULL
) ON [PRIMARY]
GO

Thực hiện việc insert data vào table People ở Database 1
VD:

INSERT INTO [dbo].[People]
           ([PersonID]
           ,[LastName]
           ,[FirstName]
           ,[Address]
           ,[City])
     VALUES
           (1
           ,'Zhao'
           ,'Ming Xin'
           ,'HCM'
           ,'HCM')
--...
Để lấy dữ liệu từ bảng Persons trong Database 1

CREATE PROCEDURE [dbo].[sp_GetPeople]
    -- Add the parameters for the stored procedure here
    @ErrorCode INT = 0 OUTPUT   
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    Set @ErrorCode = 0;
    Select * from People
END
Sau đó bạn khởi tạo ServiceBus, với topic = jittopic, subscription là testsub.
Tạo mới Logic App

Tạo Logic App LA_GetPeople

Sau khi Azure được deploy logic app, màn hình Logic Apps Designer sẽ mở ra 1 trang bao gồm video giới thiệu và những common trigger. Phía dưới Templates, chọn Blank Logic App.
Sau đó bạn chọn Schedule
Để tiện cho việc debug, bạn chỉnh Interval = 365 ngày
Thêm mới 1 action: Chọn SQL Server -> Execute stored procedure
Lúc này bạn nhập connection string hoặc chọn connection nếu Logic App xài database cùng 1 tài khoản Azure
Sau đó bạn chọn database name, và điền thông tin username/password
Sau đó bạn chọn stored procedure để thực hiện việc lấy dữ liệu:
Lưu ý ở bước này, bạn cần có 1 variable để lưu trữ ErrorCode do sp trả về. Nhấp vào dấu + để thêm Variable trước khi gọi stored procedure
Bạn đặt tên biến là ErrorCode. Ngoài ra, bạn có thể đặt tên cho step này.
Quay trở lại step Execute stored procedure: bạn chọn biến ErrorCode từ gợi ý
Thêm mới 1 action với 2 điều kiện: ErrorCode = 0 và Result.Table1 != null. Do đặt tên ở step Execute stored procedure, nên việc chọn dynamic content sẽ khá dễ dàng.
Trong điều kiện true, sẽ đẩy message lên Service Bus. Nhưng dữ liệu từ sp trả về là 1 list people, bạn cần thực hiện vòng lặp để lấy từng phần tử:
Sau đó bạn thêm step gởi message lên ServiceBus
Chọn Send Message
Điền thông tin Connection Name và chọn Service Bus Namespace:
Sau đó chọn ServiceBus Policy:
Chọn Queue/Topic để đưa message lên:
Thực thi logic app LA_GetPeople bằng cách bấm vào nút Run. Kết quả sẽ được hiển thị bên dưới:
Mở ServiceBus để kiểm tra số lượng message đã nhận được:

Tạo Logic App LA_InsertPerson

Tương tự như Logic app LA_GetPeople, tạo mới logic app
Thêm các action như sau: ServiceBus-> When a message is received in a topic subscription (auto-complete)
Chọn Topic name là jittopic và subscription là testsub
Sau khi nhận được data, thêm action Parse Json
Chuyển qua màn hình code view, kiểm tra trước khi Parse Json, input data có được decode từ base 64 sang raw data chưa

"Parse_JSON": {
 "inputs": {
  "content": "@{base64ToString(triggerBody()?['ContentData'])}",
  "schema": {
   "properties": {
    "Address": {
     "type": "string"
    },
    "City": {
     "type": "string"
    },
    "FirstName": {
     "type": "string"
    },
    "LastName": {
     "type": "string"
    },
    "PersonID": {
     "type": "integer"
    }
   },
   "type": "object"
  }
 },
 "runAfter": {},
 "type": "ParseJson"
}

Sau đó, chọn action SQL Server-> Insert row
Thực hiện việc mapping data 1-1 từ kết quả Parse Json với các column trong table People
Kiểm tra kết quả Database 2

Tham khảo

  1. Quickstart: Create your first automated workflow with Azure Logic Apps - Azure portal: https://docs.microsoft.com/en-us/azure/logic-apps/quickstart-create-first-logic-app-workflow
  2. Common scenarios, examples, tutorials, and walkthroughs for Azure Logic Apps: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-examples-and-scenarios

Hi vọng với bài viết này, bạn sẽ làm quen các thao tác cơ bản khi sử dụng Logic App.
Chúc các bạn thành công
Nhatkyhoctap's blog