Service Broker Layer and Apex Rest Service : Part I

apex rest

เริ่มกันด้วยบทความแบบเน้นๆกันไปเลยครับ สำหรับ article แรกเพราะวันนี้ได้ Project ที่ต้อง integrate salesforce กับระบบหลังบ้านของ bank แต่เรื่องมันมีอยู่ว่า SOAP Web services ของ Vendor อีกเจ้ายังไม่ได้ทำแต่ Code บน salesforce ของเราต้องทำเพื่อจะได้ส่งให้ QA Team ได้ทำการเทสได้ ทำให้ต้องมานั้งคิดว่าจะทำไงดี บวกกับที่ Project นี้มี Developer 3 ชีวิตที่แบ่งงานกันทำ ทำให้ต้องตัดอะไรที่ขึ้นต่อกันออกไป ผมก็เลย design solution ได้ดังนี้


  1. ต้องทำ Broker Service ขึ้นมาให้น้องในทีมใช้ เพื่อเรียกและรับค่า App Ref number กับไปใช้
  2. ต้องสามารถ Swith Class Service ได้ง่ายเมื่อ SOAP Web service ของ Vendor อีกเจ้าทำเสร็จ

ทีนี้ลองมาดู Diagram ว่าจะเป็นประมาณไหนกันครับ

Service Architecture

จากรูปจะเห็นว่าจะมีส่วนที่เป็น Front end(View Layer) จะมีน้อง Developer จิ๋วที่จะมี Controller Class มาเรียก Web Service โดยจะมาเรียกผ่าน Service Broker ที่ Service Layer เราจะเห็นว่าเราแยกงานกันทำนะครับ และเราทำกำหนด โครสร้างของ Resquest Data Model และ Respond Data Model ไปแล้ว น้อง จิ๋วเลยไม่ต้องคิดไรมากแค่ส่งและรับข้อมูลตามที่คุยกัน สบายเลย 555+

ส่วนผมก็สร้าง Implement code ที่ Service Layer นี้แหละครับงานนี้มันเลยต้องใช้ การวางโครงสร้าง และ Design Pattern หน่อยผมอาจจะเข้าใจไม่ถูกก็ได้ในเรื่องของชื่อ Design Pattern แต่ที่ผมใช้คือ Strategy Pattern ครับตาม Diagram นี้เลย

Ref : https://sourcemaking.com/design_patterns/strategy
ใครสนใจอ่านต่อได้ที่นี่เลยครับ https://sourcemaking.com/design_patterns/strategy

ทีนี้มามาต่อกันเลยด้วยการทำ Mock Web Service กันก่อน โดยผมเลือกทำเป็น Rest Service ครับ

แล้วจะใช้อะไรทำว่ะนี้………………………………………………

อ๋อโชคดีที่ salesforce มี Apex Rest ให้เราเขียนได้โดยมีโครงสร้างประมาณนี้

Apex Rest Systax

@RestResource(urlMapping = ‘/slos/*’) Annotation คือการบอก Apex REST endpoint ชื่ออะไรในที่นี้ผมให้ชื่อ slos ถ้าสมมุติว่าผมเขียน code ที่ instance “https://na8.salesforce.com/” ผมจะได้ Endpoint ของ Service เป็น https://na8.salesforce.com/services/apexrest/slos ประมาณนี้

ปกติการ Rest Request จะใช้ HTTP method ที่เป็น HTTP GET, POST, PUT or DELETE แต่ของผมต้องการส่งข้อมูลไปทำงานเลยใช้ POST โดยผมได้เขียน sendRequest Method ไว้แล้วกำหนด Annotation ชื่อ “@HttpPost” ทำให้เวลามี request แบบ POST จะเข้า Method นี้เลย เอาหล่ะ เขียนเสร็จแล้วจะทดสอบมันอย่างไงดี พระเอกเราคือ PHP Web App ชือ workbench

Login Screen

หลังจาก Login Successfully แล้ว เข้าไปที่ utilities >> REST Explorer

ที่หน้า Rest Explorer ให้เรื่อง HTTP Method เป็น POST กำหนด Body = {“caid” : “100100100100104”} แล้วกด Execute เพื่อดูผมลัพท์

ได้ผลแบบนี้สบายแล้วครับลุยต่อแต่ไว้ Post หน้ามาต่อกันครับวันนี้แค่นี้ก่อน

ต่อ Service Broker Layer and Apex Rest Service : Part II

Show your support

Clapping shows how much you appreciated Keattisak Chinburarat’s story.