Đặc biệt cảm ơn anh Bùi Minh Quốc và anh Bùi Ngọc Hoàng đã training Salesforce, hướng dẫn cách làm việc ở công ty, và giúp đỡ những khó khan trong quá trình học tập; cảm ơn anh Đào Thanh
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH WEB APP TRÊN SALESFORCE
TP Hồ Chí Minh, tháng 6 năm 2022
Trang 2LỜI MỞ ĐẦU
App là một thành phần không thể thiếu trong cuộc sống hiện đại, và là một phần lớn của ngành công nghệ thông tin Trong những năm gần đây, với sự phát triển của điện toán đám mây, các app đang di chuyển lên web, trở thành web app ngày càng nhiều
Với nhiều tiện ích như xử lý tập trung, thu thập dữ liệu online, dễ dàng truy cập, dễ dàng quảng cáo, … web app có rất nhiều lợi thế hơn app thông thường Và theo xu hướng phát triển của thế giới, web cũng như web app sẽ ngày càng phát triển hơn Capgemini Việt Nam là một trong những công ty theo đuổi sự phát triển này
Sau khoảng thời gian học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia xây dựng web trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập sau hè Vì vậy, em quyết định chọn Capgemini Việt Nam - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty Capgemini Việt Nam đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một game 3D Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời gian,công sức để hướng dẫn chúng em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Bùi Minh Quốc và anh Bùi Ngọc Hoàng đã training Salesforce, hướng dẫn cách làm việc ở công ty, và giúp đỡ những khó khan trong quá trình học tập; cảm ơn
anh Đào Thanh Tùng, chị Nguyễn Thị Linh Chi, anh Nguyễn Minh Thống, anh Nguyễn Văn Vinh đã giúp đỡ cho em tận tình những khó khăn trong công việc, khó khăn việc làm quen với
công việc mới, môi trường mới; và cảm ơn tất cả mọi người ở Capgemini Việt Nam đã rất thân thiện và chào đón các thực tập sinh chúng em
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Tưởng Thành Long Tp.HCM, ngày 17 tháng 6 năm 2022
Trang 4NHẬN XÉT CỦA GIÁO VIÊN
Trang 5
MỤC LỤC
LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA GIÁO VIÊN 4
Chương 1: Giới thiêu công ty thực tập 6
1 Giới thiệu công ty Capgemini Việt Nam 6
2 Sản phẩm của công ty 6
Chương 2: Giới thiêu Salesforce 7
1 Salesforce là gì? 7
2 Khái niệm chung 7
2.1.1 Apex 7
2.1.2 SOQL 7
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 11
2 Nghiên cứu kỹ thuật 11
2.8 Tìm hiểu ngôn ngữ Apex 11
2.8.1 Kiểm thử với Apex 13
2.8.2 Tìm hiểu giới hạn của Salesforce cho Apex 13
2.8.3 Lập trình giao diện trên Salesforce 15
2.8.4 Gọi Salesforce từ bên ngoài, và từ bên ngoài gọi Salesforce 16
3 Thực hiện project 17
4 Chi tiết công việc 18
TÀI LIỆU THAM KHẢO 19
TỔNG KẾT 20
Trang 6Chương 1: Giới thiêu công ty thực tập
Hình 1 Logo công ty Capgemini
1 Giới thiệu công ty Capgemini Việt Nam
Capgemini được thành lập năm 1967 tại Pháp với tên gọi Sogeti Capgemini là một công ty tư vấn IT và thuộc top 10 công ty trong ngành này trên toàn cầu Sau hơn 50 năm thành lập, Capgemini đã khẳng định vị thế của mình là người tiên phong trong ứng dụng công nghệ thông tin cho nhu cầu thực tế
Làm việc với 85% trong số 200 công ty hàng đầu thế giới theo danh sách Forbes Global 2000, Capgemini có mặt ở hơn 50 nước trên thế giới với hơn 340,000 nhân viên
2 Sản phẩm của công ty
Capgemini đồng hành với đối tác để nâng khả năng quản lý và kinh doanh của họ lên tầm cao mới Capgemini tư vấn cho nhiều lĩnh vực, từ chiến thuật đến thiết kế đến quản lý Để làm điều này, Capgemini sử dụng các ngành công nghệ mới và nhiều triển vọng như điện toán đám mây, trí tuệ nhân tạo, mạng, phần mềm, thiết kế
kỹ thuật số, công nghệ nền tảng
Trang 7Chương 2: Giới thiêu Salesforce
1 Salesforce là gì?
Hình 2 Logo của Salesforce
- Salesforce là một nền tảng cloud, hỗ trợ xây web app cho doanh nghiệp, tập trung vào CRM (customer relationship management – quản lý khách hàng)
- Salesforce hỗ trợ nhiều tính năng, object, và code liên quan đến CRM hỗ trợ lập trình viên trong việc viết web app
2 Khái niệm chung
2.1.1 Apex
- Apex là ngôn ngữ được sử dụng trên nền tảng Salesforce ở phần backend Apex thực hiện giao dịch database thông qua SOQL và được chạy bởi hệ thống đám mây của Salesforce
- Apex là một ngôn ngữ có cú pháp tương đối giống Java, và có nhiều lợi thế của Java như tính dễ sử dụng và strongly typed Ngoài ra, Apex cũng dễ test với nhiều công cụ
hỗ trợ như code coverage và unit test
- Apex tích hợp nhiều tính năng như tích hợp DML operation như insert, update, delete Apex cũng hỗ trợ lỗi DML
- Apex là ngôn ngữ case insensitive
2.1.2 SOQL
Trang 8- SOQL (Salesforce Object Query Language) là một ngôn ngữ query dành cho Salesforce SOQL sử dụng câu lệnh SELECT giống SQL, nhưng có một số sự khác biệt giữa SOQL và SQL
- Dữ liệu SOQL được lưu dưới dạng
Object
- Dữ liệu SQL được lưu dưới dạng bảng
- SOQL không cho phép câu lệnh thay
đổi dữ liệu như INSERT, UPDATE, …
(thay vì thế, cần sử dụng Apex DML)
- Để thay đổi dữ liệu SQL, cần dùng các câu lệnh thay đổi dữ liệu như INSERT, UPDATE, …
- SOQL không cho phép SELECT *
Thay vì thế, cần ghi ra toàn bộ những
trường dữ liệu mình cần
- SQL cho phép SELECT * Điều này khuyến khích việc lấy thừa dữ liệu có khả năng gây tắc nghẽn database
- SOQL hạn chế khả năng JOIN Chỉ
được JOIN với những Object có khóa
ngoại và chỉ trong những trường hợp
đơn giản
- SQL cho phép JOIN với mọi bảng JOIN là một lệnh tốn nhiều tài nguyên
và có khả năng gây nghẽn database
2.2 Trigger
- Trong Salesforce, trigger được viết bằng Apex, không phải SQL, và nó hoạt động tương đối giống trigger của SQL Có nghĩa là khi có thay đổi lên record nào đó, trigger sẽ được chạy Điều này cho phép những xử lý phức tạp hơn nhiều so với SQL
- Apex Trigger được phân loại theo 2 kiểu Thứ nhất là type: Insert, Update, Delete Thứ hai là Before / After Tổng cộng có 6 kiểu Apex trigger Before thường được sử dụng để kiểm tra dữ liệu có hợp lệ không, trước khi nhập vào database After thường được sử dụng nếu hành động insert / update / delete này có gây ảnh hưởng đến record khác
2.3 Test class
- Apex có framework hỗ trợ viết & thực thi test cho Apex class hoặc Apex trigger, bằng cách viết Apex test class
- Salesforce bắt buộc rằng trước khi deploy sản phẩm cuối cùng, phải đảm bảo Code Coverage trên 75% và tất cả các test trong tất cả test class đểu pass
2.4 Xử lý bất đồng bộ
Trang 9Hình 3 Asyncronous Apex
- Những xử lý bất đồng bộ của Salesforce chạy với độ ưu tiên thấp nhưng có giới hạn
về tài nguyên như số dòng query tối đa, hay thời gian chạy tối đa, cao hơn
2.5 Limit
- Salesforce là một môi trường làm việc chung với nhiều khách hàng Vì vậy, Salesforce không thể cho phép 1 khách hàng chiếm dụng tài nguyên đám mây Từ đó, các giới hạn được hình thành
- Salesforce có nhiều giới hạn, dễ thấy nhất là những giới hạn lên thời gian CPU, giới hạn RAM, giới hạn lưu trữ dữ liệu, giới hạn gọi database, … Những giới hạn này là một hệ quả không thể tránh khỏi khi ứng dụng đám mây
2.6 Aura & Lightning component
- Lightning và Aura component là các phần tử có thể tái sử dụng trong giao diện.
- Salesforce cung cấp sẵn cho lập trình viên một số các component thông dụng như vùng nhập dữ liệu, bảng các object liên quan, …
2.7 Giao diện
Trang 10- Mỗi record đều có giao diện riêng của mình Khi khởi tạo một loại record, Salesforce
sẽ tự động tạo cho mình một giao diện mặc định
- Sau đó, mình có thể thay đổi giao diện này theo ý muốn, sử dụng các Aura & Lightning Component
Trang 11Chương 3: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình web app trên Salesforce” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình web app trên Salesforce, đồng thời rèn luyện những kỹ năng mềm như tiếp quản project đã phát triển, làm việc nhóm, thuyết trình, giao tiếp, lập trình agile Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển phần mềm chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 2 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty, quy định của công ty
Được xem video giới thiệu về công ty, đọc org chart của công ty, và xem video hướng dẫn các quy định của công ty, bao gồm bảo mật, đạo đức, văn hóa công ty, và luật liên quan tới công ty
Kết quả : Hiểu thêm về công ty Capgemini, cách làm việc, văn hóa công ty Có thêm các
kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
Thời gian : 4 tuần
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, thực tập sinh sẽ tìm hiểu về Salesforce và cách sử dụng nó, thông qua khóa học Trailhead được cung cấp bởi Salesforce và chọn lọc bởi Capgemini Ngoài ra, thực tập sinh sẽ được hướng dẫn bởi trainer về các công cụ hỗ trợ cho công việc sau này Một số phần mềm trong số đó như Visual Studio Code với các Extension tương ứng – IDE lập trình đa dụng rất phổ biến, Notepad++ - chương trình soạn thảo văn bản rất hữu ích và phổ biến với lập trình viên
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Hiểu biết về ngôn ngữ Apex của Salesforce, cách truy cập dữ liệu trên
Salesforce dung SOQL, thiết kế giao diện web trên Salesforce
2.8 Tìm hiểu ngôn ngữ Apex
Thời gian : 5 ngày (1 tuần)
Nội dung : Trong thời gian này, thực tập sinh sẽ tìm hiểu về Apex và SOQL cơ bản
của Salesforce và cách sử dụng nó, thông qua khóa học Trailhead được cung cấp bởi Salesforce và chọn lọc bởi Capgemini
Trang 12- Viết Apex
Ngôn ngữ Apex tương đối giống ngôn ngữ Java, tuy vẫn có 1 số khác biệt Thực tập viên được dạy những khác biệt này Trong đó, khác biệt quan trọng nhất là mỗi Apex class cần 1 test class để kiểm thử tự động, và yêu cầu code coverage hơn 75% cho code sản phẩm
- Viết câu query SOQL
Các kiến thức cơ bản về sự khác biệt giữa SOQL và SQL, những hạn chế Salesforce đặt lên SOQL để duy trì hệ thống điện toán đám mây của họ Ngoài ra, thực tập viên được dạy những cách để vượt qua những hạn chế đó nếu cần
- Viết trigger
Khi một record dữ liệu bị thay đổi, trigger của record đó sẽ được kích hoạt và thực hiện đoạn code Apex được định nghĩa trong trigger đó Trigger là một trong nhiều thành phần quan trọng của data model
- Sử dụng developer console
Giao diện Developer console
Developer console là 1 web IDE để viết Apex Công cụ developer console có
Trang 13Kết quả :
- Học ngôn ngữ Apex
- Làm quen với sử dụng điện toán đám mây
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn, dễ đọc, dễ hiểu
2.8.1 Kiểm thử với Apex
Thời gian : 5 ngày (1 tuần)
Nội dung : Trong thời gian này, thực tập sinh sẽ tìm hiểu về cách viết Apex test class
và những quy định liên quan, thông qua khóa học Trailhead được cung cấp bởi Salesforce và chọn lọc bởi Capgemini
- Viết Apex test class
Test class được chú thích với @IsTest Tương tự với các hàm test Với chú thích này, Salesforce sẽ coi những lớp này là test class, và cho phép thực hiện test với chúng
- Học những quy định liên quan
Có nhiều quy định liên quan đến test class
Thứ nhất, vì Salesforce khuyến khích việc kiểm thử kỹ càng cho sản phẩm, test class không tính vào limit về kích cỡ code của project Có nghĩa ta có thể viết test class dài đến đâu cũng được
Thứ hai, các hàm test chịu những giới hạn tính toán như các hàm thông thường
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Học cách viết test class
- Biết khái niệm unit test và
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn, dễ đọc, dễ hiểu
2.8.2 Tìm hiểu giới hạn của Salesforce cho Apex
Thời gian : 5 ngày (1 tuần)
Nội dung: Trong thời gian này, thực tập sinh sẽ tìm hiểu về giới hạn Salesforce đặt
cho Apex và cách sử dụng lập trình bất đồng bộ để vượt qua những giới hạn đó, thông qua khóa học Trailhead được cung cấp bởi Salesforce và chọn lọc bởi Capgemini
- Giới hạn của Apex
Trang 14Giới hạn của Apex
Vì Salesforce là nền tảng xử lý điện toán đám mây, Salesfoece không thể cho phép một người dùng chiếm dụng hết tài nguyên đám mây Đó là lý do Salesforce đặt giới hạn lên nhiều tiêu chí như thời gian chạy, bộ nhớ, số dòng query, … Xử lý bất đồng bộ cho phép nới lỏng những giới hạn này, bằng cách tận dụng tài nguyên khi nhu cầu không cao
- Xử lý bất đồng bộ
- Những xử lý bất đồng bộ của Salesforce chạy với độ ưu tiên thấp nhưng có giới hạn về tài nguyên như số dòng query tối đa, hay thời gian chạy tối đa, cao hơn
- Hàm bất đồng bộ
Hàm bất đồng bộ là một hàm được chú thích với @future Các hàm bất đồng bộ không nhận Object làm tham số
- Lớp Queueable
Nếu cần chức năng của hàm bất đồng bộ với tham số Object, thì Apex có interface
Trang 15Xử lý batch là phương pháp xử lý dành cho những query lớn, rất nhiều dòng dữ liệu Những xử lý này sẽ được chạy với độ ưu tiên thấp, để dành tài nguyên đám mây cho nhưng yêu cầu ưu tiên cao hơn
- Chạy code theo lịch
Salesforce cho phép chạy code theo lịch, để tự động hóa các thao tác được thực hiện thường xuyên
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành, kiểm tra kiến thức đã học
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
Kết quả :
- Có được những kiến thức về những tiện lợi và hạn chế của điện toán đám mây
- Biết được giới hạn của nền tảng Salesforce
2.8.3 Lập trình giao diện trên Salesforce
Thời gian : 5 ngày (1 tuần)
Nội dung : Học cách viết giao diện trên Salesforce, cách để gọi xuống Apex từ giao
diện
- Một số component có sẵn của Salesforce – Aura & Lightning:
Salesforce có cho sẵn một số component viết sẵn dễ dàng sử dụng cho các chức năng thông dụng như nhập text, nhập ngày, hiển thị thông tin của record hiện tại,
… Điều này khiến cho việc viết giao diện mới dễ dàng hơn Ngoài ra, khi Salesforce nâng cấp giao diện, những component này sẽ được nâng cấp theo
- Viết component mới:
Component của Salesforce được xây dựng trên HTML / JS theo kiểu web app Mỗi component có thể kết nối với 1 controller class được viết bằng Apex Điều này cần thiết vì chỉ thông qua Apex ta mới kết nối được với database Controller class sẽ chuyền dữ liệu cho component khi các hàm được gọi
- Giao diện mặc định của Salesforce & cách để tùy chỉnh giao diện:
Trang 16Ví dụ về giao diện mặc định của Salesforce
Khi ta tạo một record mới trong database, Salesforce tạo sẵn cho ta môt giao diện mặc định để thực hiện các chức năng cơ bản như nhập, xuất, sửa, xóa, … Ta có thể tùy chỉnh giao diện của từng record để giao diện đẹp hơn, những thông tin quan trọng nổi bật hơn, …
Thực hiện :
- Tham gia đầy đủ các buổi training
- Thay đổi giao diện của một record, sử dụng custom component của mình
Kết quả:
- Đã có thể tạo ra giao diện Salesforce và tùy chỉnh giao diện theo ý muốn
2.8.4 Gọi Salesforce từ bên ngoài, và từ bên ngoài gọi Salesforce
Thời gian : 5 ngày (1 tuần)
Nội dung : Học cách sử dụng Apex, gọi thông qua cơ chế REST & SOAP Học cách