Post on 28-Mar-2016
description
transcript
© RightNow Technologies, Inc.
Connect Web Services for SOAP
Introduction and Overview
Mark Ericson
mark.ericson@rightnow.com
Disclaimer
Statements included in this presentation, other than statements or characterizations of historical fact, are forward-looking statements. These forward-looking statements are based on our current expectations, estimates, and projections about our industry, management‟s beliefs, and certain assumptions made by us, all of which are subject to change. Forward-looking statements can often be identified by the words such as “anticipates,” “expects,” “intends,” “plans,” “predicts,” “believes,” “seeks,” “estimates,” “may,” “will,” “should,” “would,” “could,” “potential,” “continue,” “ongoing,” similar expressions, and variation or negatives of these words. These forward-looking statements are not guarantees of future results and are subject to risks, uncertainties, and assumptions that could cause our actual results to differ materially and adversely from those expressed in any forward-looking statement.
The risks and uncertainties referred to above include, but are not limited to, our assessment of current trends in the CRM market, possible changes to our approach to CRM and our core product strategies, changes to the functionality and timing of future product releases, customer acceptance of our existing and newer products, possible fluctuations in our operating results and our rate of growth, interruptions or delays in our hosting operations, breaches of our security measures, and our ability to expand, retain, and motivate our employees and manage our growth. Further information on potential factors that could affect our financial results are included in our annual and periodic filings with the Securities and Exchange Commission.
By sharing our product roadmap with you, we are not undertaking an obligation to develop the software with the features and functionality discussed herein.
The forward-looking statements in this presentation are made as of August 20, 2010 (today). We undertake no obligation to revise or update publicly any forward-looking statement for any reason.
What to expect from this presentation…
Introduction to Connect Web Services for SOAP
Web Services Background
Overview of API key concepts and capabilities
Discussion of RightNow API directions
Covered in other RDC sessions…Common Object Model
Coding examples
RightNow Object Query Language (ROQL)
Custom Objects & Generic / metadata-driven coding
Agenda
Introducing Connect Web Services for SOAP !
Web Services background and key concepts
Connect Web Services for SOAP capabilities
Choosing the right data RightNow API
Conclusion
Connect Web Services for SOAP
Latest (and greatest) API from RightNow
Released with RightNow CX May‟2010
Based on the Connect Common Object Model
Designed for…Standards Compliance
Ease of use
Backward compatibility
Interoperability
Efficiency
Extensibility
© RightNow Technologies, Inc.
Connect Web Services for
SOAP Introduction
Web Services Background
What are Web Services?
Web APIs that can be accessed over a network, often the internet
Typically client/server communications using Web (W3C) standards
HTTP protocol
XML Encoding
SOAP messaging
WSDL contracts
Two predominate Web Services approaches…
SOAP & REST
What is SOAP?
W3C - Simple Object Access Protocol
An XML-based wire-protocol for web services
Often delivered over HTTP
actually transport neutral
XML Consists of
a header (for meta information)
and a body (for request and data information)
Note: RightNow initially supporting SOAP v1.1
What is a WSDL?
W3C - Web Services Definition Language
Companion to SOAP (the protocol)
A shared contract between client & server
requester / responder, producer / consumer, …
Describes available operations supported by server
Describes „wire syntax‟ (parameters) for those operations
Describes „assertions‟ of capabilities
Note: RightNow initially supporting WSDL v1.1
Why WSDL & SOAP?
Interoperability…. IBM & Microsoft agreed!
and HP, Oracle, SAP, etc…
Standards-based
Not a proprietary protocol
Broad tooling and programming language support
Universal integration
“Out of the box” experience
Most tooling directly consumes a WSDL
“adapter-less” integrations
Extensible with additional standards
Security, Reliable Messaging, Routing/Addressing, Eventing,
Transactions, etc.
What is REST?
Representational State Transfer – REST
Style of software architecture for client / server communication
Server transfers “representations” of “resources”
Generally used for web mashups
RightNow currently does not offer a RESTfulAPI
REST vs. SOAP
Ongoing heated debate… RESTful vs. SOAP web services
In general… SOAP=enterprise integration, REST=web (mashups & AJAX)
Pros Cons
REST
-Simple & lightweight
-Works w/current HTTP stacks
-Widely used on Web
-Especially effective for web-browser (AJAX)
-No one standard
-Multiple payload formats
-No formal „contract‟
-Transport-level security only
-No asynchronous messaging
-No enterprise class standards (transactions,
reliable messaging, security, routing, …)
SOAP
-WSDL/Schema provide contract
- Common enterprise solution
- Headers enable aggregated standards
- Extensive tooling available
- Many add-on enterprise standards
(transactions, reliable messaging, security,
addressing, …)
-Not as simple or lightweight
-Additional complexity & overhead
-Difficult to do well in a web browser
SOA – a tale of two cities…
SOA = Service Oriented Architecture
SOA the Product
SOA has become a dirty word in some camps because of the heavy commercialization of SOA by vendors such as Progress Software, IBM & others.
These vendors have told customers to do SOA you need a laundry list of technologies and standards
• ESB, UDDI, XML edge-appliance, etc.
SOA the Architecture
Originally SOA was intended as a software architecture.
A good SOA decomposes systems into a set of independent services that can be flexibly reused and combined in different ways
In theory SOA delivers maximum IT agility
“SOA is dead… long live services!”
– Anne Thomas Manes, Burton Group
Additional Web Services Resources
Resource Description Location
Introduction
to Web Services
W3C Web Services
tutorialhttp://www.w3schools.com/webservices/ws_intro.asp
Introduction
to WSDLW3C WSDL tutorial http://www.w3schools.com/wsdl/wsdl_intro.asp
Introduction
to XMLW3C XML Introduction http://www.w3schools.com/xml/xml_whatis.asp
© RightNow Technologies, Inc.
Connect Web Services for
SOAP Introduction
Capabilities Overview
What is Connect Web Services for SOAP?
Open & standards based integration capabilities to data contained within RightNow
OpenConsumable by customers with or without RightNow professional services
Fully documented and available resources for self sufficiency
Non-proprietary protocols
Extensible (custom objects)
StandardsConfidence of interoperability
Consumable by tooling and processes that understand the standards
Standards Supported
W3CWSDL 1.1
SOAP 1.1
XML
XML Schema
HTTP/S
OASISWeb Services Security (WSS)
• Username Token Profile
WS-IBasic Profile 1.1
OtherMTOM
Capabilities Overview
Object Model
Operational Behavior
Optimizations
Other Capabilities
Including Custom Objects
Pricing & Limits
Object Model
Core Object Concepts
Primary ObjectsCRUD-capable objects
Each has a unique ID (for its type)
All inherit from RNObject
• Account, Answer, Contact, Incident, Opportunity, Organization, SalesProduct, ServiceCategory, ServiceDisposition, ServiceProduct, Task
Sub-ObjectsChild relationship to parent object
• „contained‟ by parent (aggregation)
• Child can‟t exist without the parent
Can‟t use CRUD operations on Sub-Objects• Instead, managed inline within Parent
RightNow Sub-Objects
AccountCTISettings
AccountOptions
AccountSalesSettings
AccountServiceSettings
AccountSpeedDial
AccountSpeedDialList
Address
AnswerLink
AnswerNotification
Banner
CategoryNotification
ContactMarketingSettings
ContactSalesSettings
ContactServiceSettings
CRMModules
FileAttachment
FileAttachmentAnswer
FileAttachmentCommon
FileAttachmentIncident
FileAttachmentShared
GroupAccount
IncidentContact
IncidentContactDelta
InheritOptions
Label
LabelRequired
MonetaryValue
Note
OpportunityContact
OpportunityContactDelta
OpportunityContactList
OrganizationSalesSettings
OrganizationServiceSettings
PersonFullName
PersonName
Phone
ProductNotification
Quote
QuoteLineItem
SalesProductSchedule
SLAInstance
StageWithStrategy
StatusWithType
TaskMarketingSettings
TaskSalesSettings
TaskServiceSettings
Thread
TimeBilled
TypedAddress
Operational Behavior
CRUD Operations
CRUD manages database „lifecycle‟ of objects
Create, Read (Get), Update, Delete (Destroy)
CRUD operations share common behavior
All operations are polymorphic
Create(Contact) or Create(Incident) not CreateContact
All operations support „Bulk‟
Filtering of fields returned byexemplar Object(s)
Support for inline CRUD of sub-objects
Special processing options on operations
Controls execution of external events / rules
Creating Objects with Create()
Create one or more Primary Objects
Polymorphic, for any primary objectEven mixed types
Can populate fields of object during create
Even create Sub-Objects during create !
Returns object(s) with ID values if succesfulFault (exception) if nots
Demo: Create
Updating Objects with Update()
Updates one or more Primary Objects
Only passed in fields are updated
Only ID and changed fields are required
Empty fields are ignored
Returns empty response if successful
Fault (exception) if not
Demo: Update
Reading Objects with Get()
Read one or more Primary ObjectsFor retrieval by ID
Must have ID to use
To discover objects use ROQL to query
Polymorphic, for any primary objectEven mixed types
Object(s) passed in to specify type and ID
Control over details returned by input objectInstantiate Sub-Objects to retrieve on input object
Instantiate NamedID objects to retrieve both ID and Name• Otherwise just ID returned
Returns an array of RNObject (primary objects) if successfulFault (exception) if not
Demo: Get
Relationships – Sub-Object
SubObjects are „children‟ of a parent object
They don‟t exist separate apart from parent
Deleted when parent is deleted
Managed „inline‟ within parent object
Some 1:1, others 1:* (managed as lists)
„Delta List‟ allows inline CRUD of SubObjects
while operating on parent object
Demo: Update w/SubObjects
Relationships - NameID
NamedID represent relationship to other Objects by „name‟ or „ID‟Binding by name is a shortcut for not having to query for the ID
Also, names can be retrieved on get to have both Name & ID for object
Used for some Primary Object RelationshipsContact on Incident can be set by Contact‟s email address
Used for „Menu Items‟MenuItem (aka OptList) are predefined or administratively sets of values
• usually exposed as menu fields on workspaces
• ContactType, Severity, Products, Categories, etc.
NamedIDHierarchySome MenuItems are hierarchical and NamedIDHierarchy is used
• Product & Category on Incident
NamedIDHierarchyListSometimes a „list‟ of hierarchical menuitem values are supported
Products & Categories on Answer
Demo: NamedID
Other (non-CRUD) Operations
Marketing OperationsSend mailing to a contact
Execute a campaign flow
Download & upload file attachmentsAdd/Retrieve files using MTOM standard
First API to manage file attachments via API• vs. URL to retrieve file
Helper operationsReset a contact password
Metadata OperationsRetrieve the object model (metadata) at runtime
Great for Partners
Release independent coding
Dynamic discovery of types (MenuItems and Custom Objects)
Deleting Objects with Destroy()
Delete one or more Primary Objects
Instance with ID is passed in
Children (sub-objects) also deleted
Returns an empty response if successful
Fault (or exception) if not
Demo: Destroy
Optimizations
RightNow Web Services Optimizations
RightNow offers many optimizations in the WSDL which can significantly improve performance by…
Operating on many objects at the same time
Performing a many operations in a single sever request
Reducing round-trips and the inherent latency
Optimizations are surfaced conveniently to program language bindings
Not just wire-level optimization concepts
Key optimizations in RightNow WSDL
Polymorphic Bulk operationsMixed object CRUD capabilities
• Create a contact, incident & organization in a single request
Batch operationsMixed operation capabilities
Can create, update, delete and send mailing to a contact in a single request
Chaining IDsSupported on CRUD operations
Can create a new contact and “chain” the contact id to a new incident, setting the incident contact, in a single request
Typical SOAP Requests
Inefficient, one object-operation per request!
Bulk Operations
Some Web Services allow operations on
many objects in one SOAP request
Batch
Few Web Services offer Batch
z
Chaining
Chaining allows passing results from one
operation to parameters of a subsequent
operation
Typically new ID from create to subsequent
create/update requests
Bulk, Batch, & Chaining
RightNow may be unique to combine…
z
Demo: Batch, Bulk, & Chaining
Previously Discussed Optimizations
NamedID
Relationship binding by name
• Eliminates separate round-trip for an ID lookup
Inline CRUD
Manage Sub-Objects inline
Add, or Remove from list in same call as
MTOM file attachments
Other Capabilities
Other Capabilities
Versioning & Backward Compatibility
RightNow Object Query Language (ROQL)
Security & Authentication
Transactional Behavior
File Attachments
Custom Fields
Generic Objects & Metadata
Custom Objects
Versioning & Backward Compatibility
Web Services use versioning scheme to support backward compatibility
Version is indicated by URI in XML namespace
For example, objects with XML namespace• urn:objects.ws.rightnow.com/v1
Namespace version is updated with major API changes (breaking changes)
API versioning is independent of release version
Might have several releases of RightNow without namespace changing
New RightNow releases will support old version (up to 2 years) and the latest version of the API
RightNow Object Query Language
ROQL – Pronounced “Rockwell”
SQL-like query language exposes Connect Common Object Model
Alternative to using analytics reports in other RightNow APIs
Supports two query styles
object query & results – to retrieve typed objects
tabular query/results – for selective raw data
Each has different query syntax and result data
Access to only those objects exposed in the API
Subset of direct SQL and analytics today
Object model coverage will expand over time
Paging support
Request # of objects/rows per „page‟
Result returns count & startindex,
use count „offset‟ in next query
BREAKOUT
RightNow Object Query Language Overview @ 5-6pm today!
Demo: ROQL
Security (Authentication & Cryptography)
AuthenticationWe use WSS (Web Services Security) standard for authentication
• Username Token Authentication
Username & password sent with every request• Not session-based, scalable to messaging models
Most toolkits automate this• Set once in code, toolkit sends with every request
EncryptionTransport level security
• Web Services use TLS (SSL) on the HTTP connection to encrypt the data being passed between the client and RightNow CX.
Transactional Behavior
Simple modelOne operation per SOAP request
Operation succeeds or fails (only committed if succesful)
Batch ModelBatches of operations are atomic
First operation that fails does a rollback of database
Developer must parse BatchResponseItem array to determine if transaction rolled back
• Note: Operations prior to failure will show success, but if later fault occurs everything rolled back
Multi-transaction Batch ModelAllows multiple transactions within a single batch
• Or, per operation transactional behavior within batch
Accomplished by tagging operation in batch to be „CommitAfter‟• Uisng CommitAfter attribute on BatchRequestItem
Must parse results to determine which transactions succeeded or failed
Demo: Transactions
File Attachments
File Attachments completely managed through the APIOther APIs require out of band retrieval of attachments from URL
File attachment objects Represent attachment on objects with attachment support
Provides all the meta information for attachment(s)• ID, ContentType, Filename, Size, Created/Updated Time
Support for MTOM standardMTOM (Message Transmission Optimization Mechanism)
• Uses HTML Multipart to transmit as binary for greater efficiency (save 33% overhead)
MTOM recommended for large attachments
Uploading attachmentsOn Create or Update operations
Using Base64 inline, or toolkit‟s MTOM mechanism
Downloading AttachmentsUsing GetFileData operation with ID (base64 or MTOM)
No demo for file attachments
Custom Fields
Added Custom Fields available on objects
„CustomFields‟ sequence of „GenericField‟
Available fields discovered in MetaData
GetMetaDataForClass()
GenericField
Name, DataValue, & DataType
Name corresponds to the „column name‟
Custom fields have „C$‟ prefix
Set/Update inline with Object
Demo: Custom Fields
Generic Objects & Metadata
Generic Objects - dynamically typed objects
Types dynamically discovered via metadata, and objects constructed at runtime
vs. generating typed language bindings form WSDL
Metadata Describes aspects of data model not possible with XML
Schema
Runtime discovery of type information and other constraints
Use cases
3rd Parties that want to develop version & site-independent code
Metadata driven programming that is „forward compatible‟
Generic Objects also used for „Custom Objects‟
BREAKOUT
“Web Services for SOAP & Custom Objects”
Wednesday 2:30 – 3:30
Demo: Generic Objects & Metadata
Custom Objects
„Custom Objects‟ available only through Common Object Model based APIs
Connect Web Services for SOAP & Connect PHP
Custom Objects discoverable through metadata
Custom Objects use GenericObject bindings
BREAKOUT
Web Services for SOAP & Custom Objects”
Wednesday 2:30 – 3:30
© RightNow Technologies, Inc.
Connect Web Services for
SOAP Introduction
API Pricing and Limits
Web Services API Pricing
„API operations‟ are allocated on an annual basis
API Operation corresponds to each WSDL operation
Generous amount of „API operations‟ allotted
Scales by # of seats licensed
Standard Enterprise ECC
Annual Allocations per licensed User (by type)
Named User 109,500 547,500 2,737,500
Concurrent User 328,500 1,642,500 4,927,500
Seat Month 9,125 45,625 228,125
Concurrent Seat
Month27,375 136,875 410,625
API Limits
Basic limiters in place to protect shared SaaS environment
Manages amount of data in/out per request or operation
Limits are easily managed in your code
Fault (exception) returned if limit exceeded
1,000 objects on Create, Get, Update & Destroy operations
100 ROQL statements per SOAP request
10,000 ROQL output objects (or rows) per SOAP request
100 Batch items per SOAP request
10,000 total input Objects per SOAP request
© RightNow Technologies, Inc.
Connect Web Services for
SOAP Introduction
What API should you choose?
API Comparison
1ROQL intended to replace reports & SQL2Custom Objects solution for most Custom API use cases3No plans for Custom Objects for Connect DXML-API or Connect
WSDL XML-API Connect (toolkits)
CRUD Core
ObjectsYes Yes Yes
Utility functions Yes Yes Yes
Execute Report No1 Yes Yes
Direct SQL No1 Yes - limited Yes - limited
ROQL Yes No No
Custom API No2 Yes No
Custom Objects Yes No3 No3
What API to Choose?
Connect Web Services for SOAPAll new integrations moving forward
Connect Web Services for SOAP + XML-APIWhere gaps exist in object model
Connect Data Integration or XML-APIExisting legacy integrations
Plan on migrating to Web Services for SOAP!
Connect Desktop Add-in FrameworkFor sclient-side desktop extensions and automation
© RightNow Technologies, Inc.
Connect Web Services for
SOAP Introduction
Conclusion
Conclusion
Connect Web Services for SOAP…
available May 2010 and beyond
based on the Connect Common Object Model
the latest, greatest & future of RightNow Integration
provides the best interoperability
supports the broadest set of tooling
designed for backward compatibility
• forward compatible through generic objects
the API to use for Custom Objects integration
Recommended API for RightNow CX data
integration
© RightNow Technologies, Inc.
Thank you! Questions?
Integration Product Managers
mark.ericson@rightnow.com
chris.omland@rightnow.com