Salesforce.com has announced Salesforce SOA, which for the first time, the company claims, delivers on-demand service-oriented architectures. In other words, Salesforce SOA delivers SOA as a service.
Salesforce SOA provides the ability to mashup salesforce.com's multi-tenant on-demand service with enterprise workflow and business processes to enable new kinds of enterprise applications on demand. As a new capability of the Apex programming language, Salesforce SOA will enable SOA-based business processes, such as enterprise applications, to be created, maintained, and leveraged on demand. SOA business processes will become virtual and sharable, and benefit from the scalability and agility of the on-demand model.
"Many companies have invested considerable time and expense chasing the promise of software-based SOA," said David Linthicum, CEO, Linthicum roup. "Salesforce SOA will marry SaaS and SOA to make possible new kinds of business processes and applications. Developers, IT departments and CIOs will be able to harness business logic spanning multiple applications to mashup and create thousands of new applications."
With Salesforce SOA, developers will be able to:
- Use Apex to build SOA applications that integrate to Web services from billing, inventory, or order entry systems.
- Call out to internal Web services such as Oracle Financials and SAP Order Management, and external Web services such as FedEx, dHoovers, and Yahoo!.
- Build rich applications on-demand for business processes.
The Salesforce Platform includes a feature set for building business applications such as models and objects to manage data, a workflow engine for managing collaboration between users, a UI model to handle forms and other interactions, the Salesforce API for programmatic access, mash-ups, and integration with other applications and data, and the Apex programming language.
Developers can use the Java-like Apex programming language for creating custom components, customizing and modifying existing salesforce.com code, and creating triggers. They can also use it to build and execute complex business logic, running entirely on salesforce.com's multi-tenant service. Anything built using Apex can be made available as a Web service and is accessible via SOAP and XML.
Features and capabilities of the Apex programming language include:
- Apex event model. Apex can be tied to the execution of the platform, letting developers exert fine-grained control over an application. Developers can use Apex to customize the core features and functionality of their Salesforce deployments for their unique business needs. Apex also lets you reprogram any component of Salesforce, such as Campaigns, Cases, or Opportunities, or build entirely new components completely from scratch.
- Transaction control. Because Apex is closely bound to Salesforce data, developers can readily add transactional features to their applications. For example, if one user is referencing a field while another is trying to delete it, the system is aware of the conflict. Apex also features data commits and rollbacks, which are especially important when working across multiple objects.
- Packaging, re-use, and Web services. Apex uses a packaging model similar to that of Java, in which reusable packages of code can be invoked from each other or from within triggers. Significantly, any method defined in a package can optionally be automatically exposed as a Web service, and thus can be invoked via the Web services API or directly through the AJAX toolkit.
- Performance, scalability, and upgrades. Because Apex runs on demand, developers get benefits of the scalability, reliability and availability of salesforce.com's industry-leading service. Applications potentially run faster because a single query can obtain information from multiple objects. When newer versions of Salesforce and the Apex itself are introduced, code is never rendered obsolete. Salesforce.com ensures backward compatibility so that code continues to operate without modification.
To support development with Apex, salesforce.com also offers the Salesforce Developer Network which provides tools and resources to let developers use the Apex programming language to build new applications for the AppExchange.