Vai trò mới của XML trong việc hợp nhất dữ liệu đám mây

Sử dụng XML để hợp nhất dữ liệu bán hàng với các ứng dụng của doanh nghiệp

Học cách làm thế nào để thúc đẩy dịch vụ Web XML nhằm tích hợp dữ liệu đám mây với các ứng dụng của doanh nghiệp, và tạo các ứng dụng mẫu sử dụng giao diện lập trình ứng dụng các dịch vụ Web Salesforce với giao diện lập trình ứng dụng Java cho dịch vụ Web XML (JAX-WS).

Ryan Knight, Cố vấn cao cấp

Ryan Knight là cố vấn kỹ thuật cao cấp với hơn 12 năm kinh nghiệm trong việc giúp đỡ các công ty thúc đẩy triển khai các công nghệ mới nhất. Ông đã làm việc với cả hai loại công ty lớn và nhỏ, ví dụ như Oracle, IBM và Williams Pipeline, và các công nghệ được triển khai bao trùm từ điện toán đám mây đến cấu trúc doanh nghiệp. Bạn có thể tìm hiểu thêm về kinh nghiệm của ông về Adobe Flex và công nghệ Java trên blog của ông tại anvilflex.com.



29 01 2010

Điện toán đám mây: Định nghĩa lại công nghệ thông tin

Những năm vừa qua, điện toán đám mây đã bùng nổ nhằm bao quát một cách rộng rãi và đa dạng của các ứng dụng — ví dụ như Salesforce CRM và Google Apps — và các dịch vụ — ví dụ như IBM® DB2®. Có máy chủ phục vụ trên Amazon Elastic Compute Cloud (Amazon EC2), Google App Engine, và nền tảng Force.com bởi Salesforce. Các dịch vụ này thường được gọi là Nền tảng như thể một Dịch vụ (Platform as a Service - PaaS), bởi vì các dịch vụ này cung cấp đầy đủ nền tảng mà các doanh nghiệp cần để xây dựng và phục vụ các ứng dụng công nghệ thông tin của họ.

Các từ viết tắt thường sử dụng

  • API: Giao diện lập trình ứng dụng
  • HTTPS: Giao thức truyền siêu văn bản qua lớp bảo mật
  • IT: Công nghệ thông tin
  • SOAP: Giao thức truy cập đối tượng đơn giản
  • UI: Giao diện người dùng
  • URL: Bộ định vị nguồn đa năng
  • XML: Ngôn ngữ đánh dấu mở rộng

Đề nghị của PaaS là các máy chủ phục vụ được đặt trong môi trường đa cư trú, ở đó cơ sở hạ tầng phần cứng và phần mềm được dùng chung. Các môi trường này được thiết lập nhằm đảm bảo rằng dữ liệu của mỗi tổ chức được lưu giữ một cách tách biệt trong sự quản lý chặt chẽ từ chính các tổ chức đó—tương tự như việc bạn thuê không gian văn phòng làm việc thì tốt hơn việc bạn mua nó. Khi đó, bạn không phải lo lắng về bảo trì và nâng cấp. Với PaaS, các tổ chức không chỉ tin rằng nó rất tiết kiệm mà nó còn có các lợi thế có một không hai ví dụ như tự động nâng cấp và không cần bảo trì. Mô hình này cũng cung cấp một lợi thế độc đáo nhằm giảm các rủi ro thường gặp với các dự án công nghệ thông tin mới mà thông thường các dự án này phải sử dụng rất nhiều ngân sách và hay bị lỡ tiến độ.

Salesforce là một ví dụ của một nhà cung cấp PaaS. Công ty này bắt đầu bằng việc cung cấp dịch vụ giải pháp quản lý mối quan hệ khách hàng (customer relationship management CRM), và đề nghị này đã cung cấp một giải pháp chìa khóa trao tay cho các ứng dụng thương mại nói chung ví dụ như bán hàng, quản lý mối liên hệ với các đối tác và tiếp thị. Salesforce dựa trên nền tảng Force.com để bắt đầu, đây là một PaaS hoàn chỉnh cho việc xây dựng các ứng dụng thương mại khách hàng dùng trình duyệt hoặc sử dụng môi trường phát triển tích hợp (integrated development environment - IDE) Force.com dựa trên Eclipse. Các ứng dụng có thể cũng được tùy biến sử dụng công cụ thuộc sở hữu của Java™-giống như một ngôn ngữ lập trình và được gọi là Apex.

Salesforce cho phép chúng ta tương tác với máy chủ sử dụng SOAP, điều này có lợi thế là ngôn ngữ và nền tảng là độc lập nhau. Ở đó, bạn sử dụng ngôn ngữ đặc tả dịch vụ Web(Web Services Description Language - WSDL) để miêu tả mà các phương thức đã có sẵn trên máy chủ. Một tài liệu ngôn ngữ đặc tả dịch vụ Web miêu tả một chuỗi các điểm nút mạng được gọi là các cổng, sau đó định nghĩa định dạng XML cho các thông điệp hay các dữ liệu để trao đổi với máy chủ.

Các ví dụ trong bài viết này sử dụng giao diện lập trình ứng dụng Java cho các dịch vụ Web XML (JAX-WS). JAX-WS cung cấp một số các công cụ nhằm đơn giản hóa quá trình làm việc với XML và SOAP, bao gồm tự động tạo ra các đối tượng tên miền cần thiết từ tài liệu ngôn ngữ đặc tả dịch vụ Web và tự động liên kết XML với các đối tượng Java.


Tích hợp Salesforce với các ứng dụng doanh nghiệp

Bạn cần phải xây dựng các ứng dụng mà chúng được tích hợp với Salesforce theo nhiều cách. Phương pháp đầu tiên là định hình tiến trình công việc trong Salesforce để gửi thông điệp sử dụng dịch vụ Web bất cứ lúc nào khi một bản ghi được tạo ra hay được cập nhật. Quá trình này sử dụng một thông điệp ngôn ngữ đặc tả dịch vụ Web đi—quá trình này tương tự với việc định hình một trigger trong cơ sở dữ liệu. Tiến trình công việc định hình cho Salesforce gửi thông điệp SOAP đến đích tiền cấu hình URL bất cứ khi nào dữ liệu được tạo ra, cập nhật, hay xóa. Thí dụ, trong ví dụ tính cước phí trong bài viết này, bạn có thể gửi thông báo cước phí đến hệ thống nội bộ bất cứ khi nào khi một thông báo mới được thêm vào.

Phương pháp thứ hai cung cấp khả năng tương tác trực tiếp với Salesforce sử dụng dịch vụ Web SOAP . Phương pháp này sử dụng các tệp tin mà ngôn ngữ đặc tả dịch vụ Web Salesforce tạo ra, các tệp tin này được dùng với các dịch vụ khách hàng Web. Với cách tích hợp này, Salesforce cung cấp hai loại chính của WSDL:

  • Ngôn ngữ đặc tả dịch vụ Web Đối tác là loại lỏng lẻo và có thể được sử dụng ngang hàng với rất nhiều tổ chức; Ngôn ngữ đặc tả dịch vụ Web đối tác được cho là khó làm việc hơn, bởi vì XML phải được sắp xếp thành đối tượng đại diện một cách chính xác cho mỗi tổ chức.
  • Ngôn ngữ đặc tả dịch vụ Web Doanh nghiệp là loại bền vững và giới hạn cho một tổ chức; điều này giúp làm việc với ngôn ngữ đặc tả dịch vụ Web dễ dàng hơn, nhưng nó chỉ làm việc theo sơ đồ của một tổ chức nhất định. Ngoài ra, bất cứ một sự thay đổi nào với đối tượng cũng yêu cầu ngôn ngữ đặc tả dịch vụ Web tạo lại đối tượng đó.

Bài viết này minh họa sự tích hợp với Salesforce bằng cách mở rộng bằng thí dụ được sử dụng trong sách bài tập trên Force.com: Ứng dụng tự điều chỉnh cước phí (xem Các tài nguyên này được liên kết đến các bài hướng dẫn). Với các ví dụ mẫu, bạn sẽ sử dụng ngôn ngữ đặc tả dịch vụ Web doanh nghiệp.

Khi làm việc với các dịch vụ Web Salesforce, bạn phải có dấu hiệu bảo mật. Để nhận hay thiết lập lại dấu hiệu bảo mật, sử dụng giao diện người dùng Salesforce. Kích chuột vào Setup > My Personal Information > Reset your security token. Ở đó, bạn sẽ thấy tùy chọn để thiết lập lại dấu hiệu bảo mật của bạn và nó sẽ được gửi đến địa chỉ e-mail của bạn. Sau khi bạn có dấu hiệu bảo mật của mình, hãy sử dụng nó kết hợp với mật khẩu để đăng nhập. Ví dụ, nếu mật khẩu là aaaaaa và dấu hiệu bảo mật là XXXXXXXXXX, bạn phải nhập aaaaaaXXXXXXXXXX ở nơi dành cho nhập mật khẩu.


Tích hợp với Salesforce thông qua các dịch vụ Web

Nhằm cung cấp một ví dụ làm thế nào khi sử dụng XML để tích hợp với Salesforce, Tôi phát triển một mẫu ứng dụng Java để đăng nhập đến Salesforce, các yêu cầu dữ liệu, và tạo ra các bản ghi mới. Tất cả việc giao tiếp với Salesforce đi qua kênh bảo mật HTTPS. Làm theo các bước sau để thiết lập các dịch vụ Web Java để tích hợp với Salesforce:

  1. Tạo tài liệu ngôn ngữ đặc tả dịch vụ Web doanh nghiệp trong Salesforce.

    Đăng nhập đến tài khoản tổ chức của bạn trên Salesforce và kích trái chuột vào Setup > Develop > API. Sau đó, kích phải chuột vào tài liệu ngôn ngữ đặc tả dịch vụ Web mà bạn muốn tạo.

  2. Tạo các lớp Java và các đối tượng tên miền từ tài liệu ngôn ngữ đặc tả dịch vụ Web đó.

    Thí dụ, tôi đã sử dụng công cụ wsimport có sẵn trong bộ công cụ JAX-WS. Nhằm đơn giản hóa quá trình chạy wsimport, ví dụ này sử dụng mẫu có sẵn nó là một trong các ví dụ mẫu của Salesforce. Các đối tượng tên miền Java là công cụ phát sinh cho phép các tài liệu XML được tự động ràng buộc với các đối tượng Java nhằm đơn giản hóa việc giao tiếp với máy chủ.

  3. Đăng nhập vào Salesforce thông qua các dịch vụ Web.

    Bạn phải đăng nhập trước để yêu cầu địa chỉ URL của máy chủ và ID của phiên làm việc. Đoạn mã trong Ví dụ 1 hướng dẫn làm thế nào để đăng nhập.

    Phần quan trọng của đăng nhập là lấy địa chỉ URL của máy chủ. Salesforce hoạt động trên nhiều máy chủ, ví dụ như na1.salesforce.com hay na2.salesforce.com, nhằm tăng độ tin cậy và khả năng thi hành. Khi bạn đăng nhập vào máy chủ, bạn cần phải sử dụng cùng địa chỉ URL cho tất cả các cuộc gọi dịch vụ Web về sau nhằm duy trì thông tin của phiên làm việc.

Ví dụ 1. Đăng nhập vào Salesforce
    public void doLogin(String userName, String password) {
    if (userName.length() == 0 || password.length() == 0) {
            throw new RuntimeException("user name length and/or password length 
                cannot be 0 length. \n", 
                new IllegalArgumentException("Invalid password or user name\n"));
        } else {
            try {
                URL wsdlLocation = 
                    this.getClass().getClassLoader().
                    getResource("etc/enterprise.wsdl");
                if (wsdlLocation == null) {
                    WebServiceException e = 
                        new WebServiceException("enterprise.wsdl not found!");
                    //exceptionLogger(e.getMessage(), e);
                    throw e;
                }
                port = new SforceService(wsdlLocation, 
                    new QName("urn:enterprise.soap.sforce.com", 
                    "SforceService")).getSoap();
            } catch (WebServiceException wse) {
                //exceptionLogger("Error creating salesface port ", wse);
                throw wse;
            }

            try {
                loginResponse = port.login(userName, password);
            } catch (Exception e) {
                System.out.println("Error logging in to Salesforce.com " + e);
                return;
            }

            System.out.println("Login was successful.");
            System.out.print("The returned session id is: ");
            System.out.println(loginResponse.getSessionId());
            System.out.print("Your logged in user id is: ");
            System.out.println(loginResponse.getUserId() + " \n\n");
            System.out.print("The server url is: ");
            System.out.println(loginResponse.getServerUrl() + " \n\n");
            // on a successful login, you should always set up your session id
            // and the url for subsequent calls
          ....

Bây giờ bạn đã thiết lập xong phiên làm việc cho máy khách, bạn có thể gọi và tương tác với máy chủ thông qua các cuộc gọi dịch vụ Web. Đoạn này bao gồm hai hoạt động: đọc dữ liệu từ máy chủ thông qua các truy vấn và thêm các bản ghi mới cho máy chủ.


Truy vấn Salesforce thông qua các dịch vụ Web

Để truy vấn dữ liệu Salesforce, bạn phải sử dụng ngôn ngữ đặc biệt đó là Ngôn ngữ truy vấn đối tượng Salesforce (Salesforce Object Query Language - SOQL). Bạn có thể sử dụng các truy vấn SOQL để tìm kiếm các đối tượng đặc trưng hoặc các trường của đối tượng, tương tự như làm thế nào để truy vấn SELECT các trường đặc trưng trong bảng. Bạn cũng có thể sử dụng các truy vấn SOQL để đếm số lượng các bản ghi mà nó gặp khi tìm kiếm và sắp xếp các kết quả theo một trình tự nhất định.

Cách tốt nhất để trở nên thân thiện với SOQL là sử dụng biểu đồ Schema Explorer trong môi trường phát triển tích hợp Force.com (xem Hình 1). Để mở biểu đồ Schema Explorer trong một dự án, kích đúp chuột vào salesforce.schema trong đường dẫn gốc của dự án. Bên trong biểu đồ Schema Explorer, bạn có thể duyệt tất cả các đối tượng cho tổ chức của mình; bằng cách đi sâu vào trong các đối tượng khác nhau, bạn có thể chọn các đối tượng hay các trường một cách riêng lẻ để tự động tạo ra truy vấn. Bạn cũng có thể chứa các đối tượng có liên quan trong truy vấn bằng cách đi sâu vào các danh sách của các quan hệ con của đối tượng.

Hình 1. Biểu đồ Schema Explorer
Chụp màn hình của biểu đồ Schema Explorer được mở trong môi trường phát triển tích hợp Force.com

Khi bạn có truy vấn SOQL hoàn hảo, bạn muốn thực thi, hãy nhúng nó vào trong cuộc gọi các dịch vụ Web của mình. Kết quả từ truy vấn này là một đoạn XML đại diện cho dữ liệu của bạn. Tài liệu XML này được tự động ràng buộc với các đối tượng tên miền Java, mà bạn đã tạo ra trước đó với JAX-WS.

Cho một ví dụ ứng dụng, bạn muốn đơn giản hóa việc lấy tất cả các bản ghi cước phí. Các kết quả của truy vấn sau đó sẽ được ràng buộc với các đối tượng tên miền đã tạo ra trong phần cài đặt, giống như trong Ví dụ 2.

Ví dụ 2. Các kết quả truy vấn cho việc tìm kiếm cước phí
public void getMileageReports(ForceLogin login) throws UnexpectedErrorFault, 
        InvalidSObjectFault, InvalidIdFault, InvalidQueryLocatorFault, 
        MalformedQueryFault, InvalidFieldFault {

        QueryResult queryResult = login.port
                .query("Select Contact__c, Date__c, Miles__c from Mileage__c");
        
        if (queryResult.getSize() > 0) {
            List<SObject> records = queryResult.getRecords();
            for (SObject record : records) {
                MileageC mileageC = (MileageC) record;
                System.out.println(mileageC.getMilesC().getValue() 
                        + " " + mileageC.getContactC().getValue());
            }
        }

    }

Một điều quan trọng phải nhớ khi bạn viết các truy vấn là chúng dùng để phân biệt các đối tượng và các trường khách từ các đối tượng và các trường chuẩn.  Các đối tượng khách là các bảng cơ sở dữ liệu khách Salesforce mà chúng đặc trưng cho một tổ chức. Để đảm bảo các đối tượng và các trường khách là thống nhất từ các đối tượng Salesforce tiêu chuẩn với cùng một tên, phần gắn thêm __c sau tên của đối tượng dùng để phân biệt với các đối tượng và các trường tiêu chuẩn.

Truy vấn trong Ví dụ 2 lấy tất cả các bản ghi từ đối tượng Mileage .   Chú ý quy ước __c nhằm phân loại các tên của các trường khách từ đối tượng cước phí.  Sau đó bạn có thể lặp lại thông qua các kết quả truy vấn, liên kết chúng với đối tượng MileageC , một đối tượng tên miền được tạo ra từ ngôn ngữ đặc tả dịch vụ Web doanh nghiệp.  Các đối tượng MileageC sẽ tự động gắn với dữ liệu thực cho các bản ghi cước phí.

Truy vấn trước gửi trả lại tất cả các bản ghi cước phí, kết quả này quá nhiều so với những gì bạn cần. May mắn là, bạn có thể xác định các điều kiện chọn lọc —ví dụ, ngày tháng hay một liên hệ nào đó— nghĩa là bạn sẽ thu được một số lượng giới hạn các bản ghi mà bạn cần. Giả sử bạn muốn tìm kiếm tất cả các thông báo cước phí với điều kiện chiều dài lớn hơn 300 dặm. Bạn có thể thay đổi truy vấn trên thành:

	Select Name, Miles__c From Mileage__c where Miles__c > 300

Một cách khác để chọn lọc dữ liệu nhằm thu được những dữ liệu mà chúng bị thay đổi trong một khoảng thời gian xác định. Để làm điều này bạn sử dụng phương thức getUpdated bao gồm việc chạy truy vấn, chúng sẽ lấy đối tượng cần tìm kiếm trong khoảng ngày bắt đầu và kết thúc của thời gian đó. getUpdated kết quả thu được là tất cả các đối tượng mà chúng bị thay đổi trong khoảng thời gian đã định. Đoạn mã trong Ví dụ 3 gửi trả lại tất cả các bản ghi cước phí bị thay đổi trong tháng trước.

Ví dụ 3. Lấy các bản ghi cước phí đã cập nhật
                      GregorianCalendar cal = 
                              port.getServerTimestamp().getTimestamp().
                              toGregorianCalendar();
            GregorianCalendar calEnd = (GregorianCalendar) cal.clone();
            cal.add(GregorianCalendar.MONTH, -1);
DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
            GetUpdatedResult updatedRecords = port.getUpdated("Mileage", 
                    datatypeFactory.newXMLGregorianCalendar(cal), 
                    datatypeFactory.newXMLGregorianCalendar(calEnd));

Một phương thức tương tự getUpdatedgetDeleted. Phương thức này có cùng cách thức và gửi trả lại các bản ghi bị xóa trong khoảng thời gian xác định.

Một tùy chọn khác để truy vấn Salesforce là sử dụng Ngôn ngữ tìm kiếm đối tượng Salesforce (Salesforce Object Search Language - SOSL). SOSL tương tự với tìm kiếm dựa trên văn bản, cho phép tìm kiếm đa dạng hơn. Với SOSL, nó có khả năng tìm kiếm phức tạp, các đối tượng có thể không có sự liên hệ hay ngay cả khi bạn không biết đối tượng này hay các đối tượng nào chứa đựng dữ liệu đó. Các truy vấn tạo ra với SOSL có thể cũng gửi trả lại các đối tượng không có mối liên hệ theo một cách phức tạp.

Đoạn mã trong Ví dụ 4—là một ví dụ về truy vấn SOSL từ ví dụ của Salesforce JAX-WS—nó là một ví dụ tuyệt vời của tính linh hoạt này. Đoạn mã này truy vấn các mối liên hệ, các chỉ dẫn, và các tài khoản về số điện thoại, nó minh họa cách bạn tìm kiếm các đối tượng phức tạp không có liên hệ.

Ví dụ 4. Tìm kiếm các đối tượng về số điện thoại
        SearchResult searchResult = port
                    .search("find {4159017000} in phone fields returning 
                            contact(id, phone, firstname, lastname), 
                            lead(id, phone, firstname, lastname), 
                            account(id, phone, name)");
            List<SearchRecord> records = searchResult.getSearchRecords();
            List<Contact> contacts = new ArrayList<Contact>();
            List<Lead> leads = new ArrayList<Lead>();
            List<Account> accounts = new ArrayList<Account>();

            if (records != null && !records.isEmpty()) {
                for (SearchRecord recordType : records) {
                    SObject record = recordType.getRecord();
                    if (record instanceof Contact) {
                        contacts.add((Contact) record);
                    } else if (record instanceof Lead) {
                        leads.add((Lead) record);
                    } else if (record instanceof Account) {
                        accounts.add((Account) record);
                    }
                 }
		}

Trong ví dụ này, phương thức tìm kiếm search được sử dụng với truy vấn query để thực thi truy vấn SOSL. Các kết quả sau đó sẽ được sắp xếp thành đối tượng kết quả tìm kiếm SearchResults , và các bản ghi riêng lẻ của kết quả tìm kiếm sau đó được kiểm tra để quyết định loại của chúng.


Thêm dữ liệu cho Salesforce thông qua các dịch vụ Web

Để thêm dữ liệu cho Salesforce, bạn sử dụng giống các đối tượng tên miền được tạo ra từ ngôn ngữ đặc tả dịch vụ Web doanh nghiệp. Các đối tượng này được thêm vào giống như các đối tượng thông thường, sau đó được tuần tự hóa như ngôn ngữ đánh dấu mở rộng XML đến máy chủ để lưu trữ. Một điều thách thức là tạo ra được mối liên hệ giữa các đối tượng khác nhau. Ví dụ, giả sử bạn muốn thêm một bản ghi cước phí mới cho một liên hệ xác định. Trước tiên, bạn cần tìm kiếm ID của liên hệ bạn muốn để sử dụng. Trong ví dụ này, bạn tìm các liên hệ cho một người với tên là Edna, như trong Ví dụ 5.

Ví dụ 5. Tìm liên hệ cụ thể trong cơ sở dữ liệu
  QueryResult qr = login.port
                .query("Select Id, FirstName, LastName, AccountId " +
                        "from Contact where FirstName = 'Edna'");

        String contactID = null;
        if (qr.getSize() > 0) {
            Contact contact = (Contact) qr.getRecords().get(0);
            contactID = contact.getId().getValue();
        }

Truy vấn này cung cấp ID của liên hệ đầu tiên trong danh sách. (Trong ứng dụng thực tế, bạn muốn thực hiện kiểm tra lỗi một cách bao quát hơn nhằm đảm bảo bạn có chính xác bản ghi mình cần.) Khi bạn có ID của người dùng, bạn lưu nó trong bản ghi cước phí mới, trong Ví dụ 6.

Ví dụ 6. Tạo một bản ghi cước phí mới
	  MileageC mileageC = new MileageC();
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(new Date());
        XMLGregorianCalendar activityDate = 
                DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
        mileageC.setDateC(soFactory.createMileageCDateC(activityDate));
        mileageC.setMilesC(soFactory.createMileageCMilesC(new Double(300)));
        mileageC.setContactC(soFactory.createMileageCContactC(contactID));

Bây giờ bạn đã thiết lập một bản ghi cước phí, gọi phương thức tạo mới create trong dịch vụ Web nhằm tiếp tục chuyển bản ghi đến Salesforce. Chú ý rằng phương thức create tạo ra một danh sách các đối tượng, cho phép bạn thêm một nhóm các bản ghi cước phí. Ví dụ 7 là đoạn mã nhằm gắn kết dữ liệu đến Salesforce.

Ví dụ 7. Lưu trữ một bản ghi cước phí mới vào cơ sở dữ liệu
        // call the create method passing the array of tasks as Sobjects
        ArrayList list = new ArrayList();
        list.add(mileageC);
        List<SaveResult> saveResults = login.port.create(list);
        for (SaveResult saveResult : saveResults) {
            if (saveResult.isSuccess()) {
                System.out.println("saveResult success, id= " + saveResult.getId());
            } else {
                System.out.println("saveResult error");
                // there were errors during the create call, go through the
                // errors and write them to the screen
                List<Error> errorList = saveResult.getErrors();
                for (Error error : errorList) {
                    System.out.println("Error code is: "
                            + error.getStatusCode().toString());
                    System.out
                            .println("Error message: " + error.getMessage() + "\n\n");
                }

            }
        }

Đoạn mã này gắn kết bản ghi tới Salesforce và gửi trả lại một danh sách kết quả được lưu trữ, nó chỉ ra dữ liệu được lưu trữ thành công hay có lỗi. Các thông báo lỗi nhận được từ Salesforce được miêu tả rõ ràng, giúp chúng ta dễ dàng phát hiện nguyên nhân gây ra lỗi. Cách tiếp cận đơn giản này không đảm bảo dữ liệu được lưu trữ một cách chính xác đến Salesforce, tuy nhiên. Với dữ liệu giới hạn, xem xét việc tự động lưu trữ lại dữ liệu cho đến khi nó được lưu trữ thành công.

Theo một cách tương tự, bạn có thể cập nhật dữ liệu trong Salesforce. Cách đơn giản nhất là đầu tiên truy vấn bản ghi bạn muốn thay đổi, sau đó tải bản ghi này vào một đối tượng. Bạn có thể cập nhật đối tượng, sau đó gọi phương thức update .

Một cách khác để cập nhật dữ liệu là hợp nhất các bản ghi trùng lặp. Với phương thức hợp nhất, bạn xác định một bản ghi chủ cùng với bản ghi hợp nhất. Theo cách này, bạn cập nhật bản ghi chủ với tất cả dữ liệu bên ngoài bản ghi hợp nhất. Bạn có thể hợp nhất ba bản ghi cùng một lúc.


Kết luận

Bằng việc tận dụng khả năng của XML, bạn có thể dễ dàng tích hợp dữ liệu đám mây thành các ứng dụng doanh nghiệp hiện tại. XML cung cấp định dạng dữ liệu chung, các dữ liệu này được hoán chuyển giữa các dịch vụ và các ngôn ngữ khác nhau. Ví dụ sử dụng trong bài viết này minh họa làm thế nào bạn có thể tương tác với Salesforce thông qua các dịch vụ Web XML sử dụng SOAP.

Kỹ thuật sử dụng các dịch vụ Web để tích hợp các ứng dụng tại chỗ với dữ liệu đám mây cũng có thể được sử dụng rộng rãi cho các ứng dụng khác, lấy sự điều chỉnh từ Google Apps để làm căn cứ. Bằng việc tích hợp với các dịch vụ đám mây, các tổ chức có thể nhanh chóng tạo ra các ứng dụng mới trong đám mây và vẫn thúc đẩy đầu tư của họ trong phần mềm.

Tài nguyên

Học tập

  • Force.com Fundamentals: Tìm hiểu thêm cách Force.com hoạtd động với đám mây.
  • Force.com workbook: Tìm hiểu thêm về cách sử dụng nền tảng Force.com để xây dựng ứng dụng cần thiết của chính bạn với sách bài tập Force.com.
  • JAX-WS: Tìm hiểu thêm về JAX-WS định nghĩa các API và quy ước mà hỗ trợ giao thức lời gọi từ xa (RPC) dựa trên XML trên nền tảng Java.
  • Hướng dẫn sử dụng JAX-WS: Tìm hiểu những gì bạn cần để sử dụng JAX-WS.
  • Chứng chỉ IBM XML: Tìm hiểu làm thế nào để trở thành một nhà phát triển trên XML và các công nghệ liên quan được chứng nhận bởi IBM.
  • Thư viện kỹ thuật XML: Tham khảo developerWorks với một số lượng lớn các bài viết và mẹo kỹ thuật, các bài hướng dẫn, các tiêu chuẩn và IBM Redbooks.
  • Web quảng bá và các sự kiện kỹ thuật developerWorks: Cập nhật kiến thức công nghệ của bạn.
  • Kho sách công nghệ: Tìm các sách về chủ đề này và các chủ đề khác ở đây.
  • developerWorks podcasts: Nghe các cuộc phỏng vấn và thảo luận thú vị dành cho các nhà phát triển phần mềm.

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở, SOA và dịch vụ Web, Cloud computing
ArticleID=477501
ArticleTitle=Vai trò mới của XML trong việc hợp nhất dữ liệu đám mây
publish-date=01292010