[final] building content management web … building content management web services using java...
TRANSCRIPT
11
Building Content Management Web Services Using Java & .NetMichael Thomas MohenSenior ArchitectEMC Software Group
October 5th, 2004
22
Agenda
Web Services Primer– XML, UDDI, WSDL, SOAP
ArchitecturesProducts and Tools to UseBuilding Java and .Net Web Services for Documentum
– Provider– Consumer– Office, eRoom, DTC, WDK/WebTop, Portals
Lots of Demos and Examples
33
About Me
Michael Thomas MohenSenior Architect, ESG7 Years Documentum Consulting ExperienceFocus on Integrations
– SAP, Siebel, PeopleSoft, Lotus Domino, Microsoft, eRoom, Portals
44
Today’s Presentation
During this presentation, we will look at various methods to create Web Services for Documentum, and how to consume them from DocumentumAlong the way, we will explain the technologies and standards that make up Web ServicesBest PracticesTips and Resources
55
Building Web Services for Documentum
Building Web Services around Documentum is a great way to share information and have an “open platform” or “framework” for better integrationThere are various ways to create or consume Web Services for Documentum today!
– J2EE Web Services– Microsoft .Net Web Services– Calling Web Services from the eContent Server,
DTC, eRoom, WDK/Webtop, SCS, WP and more!
66
What Are Web Services?
Web Services are a collection of standards (SOAP, XML, UDDI and WSDL) that expose business functions to users over a network
– A Web Services will expose and describe itself so that other applications can understand it
– Allows other services to locate it on the Web– Can be invoked– Returns a response
77
Web Services Standards
Web Services are characterized by four evolving standards/technologies
– XML - the basic foundation of Web– WSDL - used for service description– UDDI - service publication and– SOAP - communication protocol
88
Why Use Web Services?
Great for a distributed component technology, SOA– Web Services are perfect for applications that span platforms
and span the Internet– Web Services are stateless – scalability is much improved
over technologies like CORBA and DCOM
Improve BPMFaster project timelinesLower TCOBetter ROIRe-use of code
99
Why Use Web Services? (cont)
Web Services are vendor neutralThey are based on open standardsThey can be used on almost any platformWeb Services are firewall friendlyWeb Services use the same port as HTTP traffic
– Technically, you can block a Web Service message. A SOAP message is identified as such and you could configure the Firewall to block SOAP traffic.
1010
Web Services vs. Other Technologies
Web Services vs. CORBA, DCOM
Characteristic CORBA DCOM Web servicesRemote Procedure Call (RPC) mechanism
Internet Inter-ORB Protocol (IIOP)
Distributed Computing Environment Remote Procedure Call (DCE-RPC)
Hyper-Text Transfer Protocol (HTTP)
Encoding Common data Representation (CRD)
Network Data Representation (NDR)
Extensible Markup Language (XML)
Interface Description Interface Definition Language (IDL)
Interface Definition Language (IDL)
Web Services Description Language (WSDL)
Discovery Naming Service and trading service
Registry Universal Discovery description and Integration (UDDI)
Firewall Friendly No No Yes
Complexity of protocols High High Low
Cross-platform Partly No Yes
1111
Drawbacks of Web Services
Web Services do not define any standards for business collaboration, process definition or securityThere are two major camps for Web Services -Microsoft .NET and Java (J2EE Application Server vendors like IBM/Lotus, BEA, Sun, HP)Some vendors propose their own security mechanisms, some technologies are vendor proprietaryCan be slow in some cases
1212
XML
XML (Extensible Markup Language)XML is the basic foundation of Web Services and is used for –
– Encoding data– Creating SOAP Messages (request/response)– Defining the UDDI and WSDL
XML Defines our data and how to process it
1313
WSDL
WSDL is the Web Services Description LanguageDesigned by IBM, Microsoft and AribaAn XML based standardWSDL defines Web Services interfaces, data, message types, interaction patterns and protocol mappings
1414
WSDL (cont)
1515
UDDI
UDDI (Universal Description, Discovery and IntegrationUDDI is a Web Services registry and discovery mechanismAllows Web Service clients to find Web Services – “The Phone Book”Is used for storing and categorizing business information and for retrieving pointers to Web Services interfaces
1616
SOAP
SOAP is the Simple Object Access ProtocolSOAP provides a simple, extensible and rich XML messaging framework for defining higher-level application protocols offering increased interoperability in distributed, heterogeneous environments.
1717
SOAP (cont)
SOAP DefinedDefines an envelope for Web Services communicationsMapable to HTTP and other transportsProvides a serialization format for transmitting XML documents over a network and a convention for representing RPC interactions
1818
SOAP (cont)
How Does SOAP Work?
Simple Object Access Protocol
ConsumerConsumer Web ServiceWeb Service
SOAP RequestSOAP Request
SOAP ResponseSOAP Response
1919
SOAP Protocol - Request
<SOAP-ENV:Envelope xmlns:SOAP-ENV=
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body><ns1:getPrice
xmlns:ns1="urn:xmethods-BNPriceCheck" SOAP-ENV:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"><isbn xsi:type="xsd:string">0439139597</isbn>
</ns1:getPrice></SOAP-ENV:Body></SOAP-ENV:Envelope>
2020
SOAP Message - Processing
Software on the Web Server ...Catches the XML/SOAP requestParses the XML/SOAP textCalls the requested object method with argumentsWraps the response into XML/SOAPSends the response back to the caller
2121
SOAP Protocol - Response
<SOAP-ENV:Envelope xmlns:SOAP-ENV=
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body><ns1:getPriceResponse
xmlns:ns1="urn:xmethods-BNPriceCheck" SOAP-ENV:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:float">15.57</return>
</ns1:getPriceResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
2222
SOAP Protocol – Response (cont)
The consuming application gets the XML/SOAP responseUnwraps the XML/SOAP response to get the resultResult - Book price is $15.57XML/SOAP is XML text – Lowest common denominator – HTTP as a transport - not required
2323
SOAP (cont)
A SOAP message has several parts– An Envelope*– A Header– A Body*– An Attachment– RPC Interaction– Encoding
Only the Envelope and Body are required!
2424
SOAP (cont)
Envelope– This part is required– Defines the start and end of the message
Header– Contains optional attributes used in processing the message
Body– Contains the XML data comprising the message being sent
Attachment– Consists of one or more documents attached to the main
message (SOAP with Attachments only)
2525
SOAP (cont)
RPC Interaction– Defines how to model RPC-style interactions with SOAP
Encoding– Defines how to represent simple and complex data being
transmitted in the message
2626
Other Acronyms You Need to Know
WS-I DIMESAAJWS-SecurityJAX-RPCJAXM
2727
WS-I
Web Services Interoperability OrganizationAn open industry effort created to promote Web Services interoperability
– Platforms– Applications– Programming Languages
WS-I Testing Tools
2828
Working with Attachments
Besides sending standard data in SOAP messages, you can also send files -
– Word Documents– PDF– Binary Files
Several standards include -– SOAP With Attachments (SAAJ)– DIME
2929
SAAJ
SAAJ, which stands for SOAP with Attachments API for Java, provides a convenient API for constructing SOAP messages without having to directly create the XML yourself. SAAJ was originally part of the Java API for XML Messaging (JAXM), which was developed by the JSR 67 expert group. The final release of this specification (JAXM Version 1.0) provided two different but related facilities:
– Core functionality concerned with manipulating SOAP messages in a generic way, together with the ability to send a SOAP message from one entity to another.
– A higher-level messaging facility that included reliable delivery of messages and support for messaging profiles, which require SOAP messages to be constructed in specific ways.
3030
DIME
Direct Internet Message Encapsulation (DIME) is a new specification for sending and receiving SOAP messages along with additional attachments, like binary files, XML fragments, and even other SOAP messages, using standard transport protocols like HTTP. Microsoft focused, different than Multipurpose Internet Mail Extensions (MIME)
3131
WS-Security
WS-Security describes enhancements to SOAP messaging to provide quality of protection through message integrity, message confidentiality, and single message authentication. WS-Security also provides a general-purpose mechanism for associating security tokens with messages. No specific type of security token is required by WS-Security. It is designed to be extensible (e.g. support multiple security token formats).Additionally, WS-Security describes how to encode binary security tokens. Specifically, the specification describes how to encode X.509 certificates and Kerberos tickets as well as how to include opaque encrypted keys. It also includes extensibility mechanismsthat can be used to further describe the characteristics of the credentials that are included with a message.
3232
JAX-RPC
JAX-RPC provides an easy to develop programming model for development of SOAP based Web services. You can use the RPC programming model to develop Web service clients and endpoints. A JAX-RPC runtime system (a library) abstracts these runtime mechanisms for the Web services programming model. This simplifies Web service development. JAX-RPC enables a Web service endpoint to be developed using either a Java Servlet or Enterprise JavaBeans (EJB) component model
3333
Web Services and Content Management
Why use them at all?WS can provide a framework for typical content management functionality (check-in, view, check out, workflow, edit)Provide integration services for Portal, ERM, CRM, ERP and other custom applicationsImprove Business Processes, WorkflowExtend Content to customers, partners and vendors
3434
The TCO and ROI
Lots of Code ReuseEase of integrationA Web Services framework will provide a common repository for many applications in an organization, therefore, lower project costs and timelines
3535
Use Cases
Custom PublishingSync RepositoriesHR Self Service with PeopleSofteRoom IntegrationCustom J2EE and .Net applicationsCustom Office integrationExtend WDK/WebTop/WP components
3636
The SOA “Ecosystem” Mantra
A Way to modularize your systems and applications into discrete business componentsWell defined interfacesSOA supplants old EAI techniques with Web Services standards (WSDL, SOAP, etc.)Actually, its been around for a decade
– Has been done before with DCOM, CORBA
Focuses on simple interfaces and standards, less on performance
3737
The SOA “Ecosystem” Model
Portal
CustomApplications
DesktopApplications
MacromediaFlash
WSDL files
.NET of J2EEapplication
SO
AD
eve
lopm
ent
Too
ls
SERVICE REQUESTOR SERVICE PROVIDER
TRANSPORT MECHANSIM
SOAP over HTTP
Service security
SOA Broker
UDDI ESB
SAP
WSDL files
PeopleSoft
Documentum
SO
AD
eve
lopm
ent
Too
ls
SOAP over HTTP
3838
The SOA “Ecosystem” (cont)
SOA Development ToolsService RequestorService ProviderTransport MechanismSOA ManagementSOA Infrastructure
– UDDI– ESB
3939
The Big Picture
`
Web Services User
External Web Services UsersDocumentum
Network
Scanning Station
Other Devices
`
SOAP SOAP
SOAP
SOAPSOAP
SOAPSOAP
eRoom EnterpriseLDAP
SOAPSOAP
Application ServerFarm
Web Server FarmUDDI
SOAP
SOAP
SOAP messages are sent back and forth to request and send data in XML format
UDDI is optional, but a good idea for large organizations that use many WS
SOAP is very firewall friendly,
and uses standard HTTP
ports like port 80
4040
Web Services and Documentum
What can you do with Web Services and Documentum?Be a consumer of Web Services
– For example, we can access an J2EE or a Microsoft .NET Web Service from Documentum
Be a provider of Web Services– For example, we can allow other clients to access a
Documentum Web Service, such as Microsoft Word, Outlook and custom applications. This Web Service can be J2EE or Microsoft .NET
– These clients can be JSPs, VB, Java, C++, JSP, ASP.NET
4141
Web Services and Documentum
Microsoft Office Users
Documentum
`
J2EE Application Server
.Net Server
Java Method
Documentum Job
SOAP Toolkit
`
Desktop Client User
Network
SOAP Toolkit
.Net Web Service
Apache AXIS
eRoom Server
SOAP Toolkit
`
eRoom User
SOAP/XML
Extenstions
PIA
COM Add-Ins and SOAP Toolkit
SOAP Toolkit
`
WDK, WP, WebTop Users
SOAP Toolkit
`
Portal Users
Portal Server
SOAP
4242
Documentum As A WS Provider
Requires the use of a Web Services platform – there is no internal WS provider today
– Apache AXIS– Apache SOAP– GLUE– CapeClear CapeConnect– Microsoft SOAP Toolkit (Via IIS)
Or, WS are hosted on application server– Microsoft .Net– J2EE
Future – Documentum Web Services can be hosted in Documentum in future releases
4343
Documentum As A WS Consumer
Desktop Client can access Web Services using a SOAP Toolkit, like Apache SOAP or Microsoft’s SOAP Toolkit or .Net Framework 1.1eRoom can access WS using eRoom Extensions and SOAP Toolkit – be careful of eRoom limitations with .NetDocumentum eContent Server Java methods, DocBasic procedures can call WS using SOAP callsMicrosoft Office using VB Macros or COM Add-Ins can call WS easily with SOAP Toolkit or .Net 1.1 Framework
4444
Documentum Business Process Services
Outbound and Inbound integration– External systems can invoke Documentum services
and processes– Documentum process can invoke services in external
systems
Listener outside the firewall (for security)
Standards-based: JMS, Web Services, XML, XSL Transformation, J2EE, HTTP, and SMTP (e-mail)
Configurable via Business Process Manager with no coding
4545
BPS and Web Services
DocumentumProcess Engine
Business Process Services
Enterprise Applications
External Application or Service
EAI Framework
Individual usersWeb Services, JMS, HTTP,
SMTP
4646
Portals and Portlets - WSRP
WSRP - Web Services for Remote Portlets A dynamic plug-ins for portal pages. WSRP defines how to plug remote web services into the pages of online portals and other user-facing applications. This allows portal or application owners to easily embed a web service from a third party into a section of a portal page (a 'portlet'). Formerly known as Web Services for Remote Portals, WSRP is closely allied with WSIA (Web Services Interactive Applications)A separate Java standard for portlets is known as JSR 168.
4747
Web Services Considerations
Consider the following when building Web Services for Documentum -
– Should I use the DFC or BOF?– What about TBO or SBOs?– How will I deal with attachments?– How will I deal with Security?– Are there any Performance requirements?– How can I build a WS that will be stable?– How can I build a WS that will conform to the standards?– How can I build a WS that will work with Portals?– How do I deal with change management and Web Services?
4848
DFC 5.1/BOF 1.0
Business Object Framework (BOF) IntroducedFramework Version 1.0 Documentum 5.x applications
– Use BOF (out of the box)– Can be customized through BOF
BOF Object Types Introduced– Type based Objects (TBO)
Provide functionality that is specific to a repository object type (i.e. my_sop_document, …) and thus docbase specific
– Service Based Objects (SBO)Provide functionality that is object and docbase neutral (can be employed by any application – AutoNumber Service)
4949
What’s Coming in Release 5.3?
Documentum Platform Release 5.3– Still in Development, so this could change!– DFC includes Web Services Framework– Leverages BOF SBOs
• Authoring• Deployment
Web SBO Web SBO Programming Programming
ModelModelDevelopmentDevelopment
ToolsToolsWeb Service Web Service
Runtime (Axis 1.2)Runtime (Axis 1.2)ContentContent
Transfer (UCF)Transfer (UCF).NET friendly.NET friendly
WSDLWSDL
5050
Typical Web Service Invocation Process
Page 50
Web Services
Client
Web Services Platform
XML MessageXML MessageConvert XML message to Java Type
Convert Java type to
XML message
Convert XML message to Java Type
Convert Java type to
XML message
ServiceServiceJava TypeJava Type
XML MessageXML Message
Java TypeJava Type
5151
Web Services Platforms
Many choices for Web Services platformsSome popular platforms include -
– Microsoft .Net– Apache AXIS, SOAP– Sun JWSDP– IONA XMLBus– CapeClear CapeConnect– Systinet’s WASP– Mind Electric’s GLUE
Some offer graphical tools, some others are command line focused
5252
Web Services Application Servers
Many choices for Web Services Application Servers– Microsoft .Net– IBM WebSphere– Oracle– BEA WebLogic– ATG– JBoss
5353
Which Platform Should I Use?
Depends on timeframe, version of Documentum, use cases, your infrastructure, skills and the project at handWeb Services will be in Documentum platform in the futureCross Platform, Server side WS
– Recommend using Apache AXIS
Office, eRoom and Desktop WS– Recommend using .Net Or– .Net Stubs accessing Apache AXIS WS
5454
Java Architecture
Page 54
Documentum
J2EE Server
DocBase(s)DocBase(s)
XML Applications,
Methods, Procedures
XML Applications,
Methods, Procedures
JavaBean or Web Service or
Applet (Client
Program)
JavaBean or Web Service or
Applet (Client
Program) DFC and/or
BOF
DFC and/or
BOFJDBCJDBC BOFBOF DFCDFC
DMCLDMCL
WSDLWSDL
Web Services Container
(Apache AXIS)
Web Services Container
(Apache AXIS)
Web Services Client
SOAP ToolkitSOAP Toolkit
SOAP over H
TTPSO
AP over HTTP
5555
Coding JavaBeans
DFC or BOF?Modularize the code
– Sessions– Errors– Utilities– Content Transfer
Always manage your sessionsLock() and Unlock()
– Thread Safe
Global versus Local Session objects– Apache AXIS versus IBM WebSphere
5656
Axis - Overview
An open source implementation of a SOAP engine Provides a framework for constructing SOAP processors e.g. clients/serversServer implementation that can run standalone or plug into servlet engines as a unique ‘web app’Major spec support:
– SOAP 1.1/1.2– WS-I Basic Profile v1.0– JAX-RPC 1.1 (Implemented and passed TCK)– SAAJ 1.2 (Implemented and passed TCK)– Supports WSDL (v.1.1) and creates a WSDL file for each
Web service deployed– JAXM, HTTP 1.1
5757
Axis – Overview (cont)
Command Line, very little GUI toolsApache Axis Web Services uses the .jws file extenstion
5858
A Simple Documentum JavaBean// import the Documentum JAR files here …public class DCTMClass {private IDfSession dctmSession;private String fullstring;public String login(String username, String password, String domain, String docbase) {IDfClient client;IDfLoginInfo li;String sessionString;String errorInfo;errorInfo = "";sessionString = "";String docbasename="";try { client = DfClient.getLocalClient();li = new DfLoginInfo();li.setUser(user);li.setPassword(password);li.setDomain(domain);dctmSession = client.getSharedSession(docbase, li, "Browse");docbasename = dctmSession.getDocbaseName();// release the session and unlock} catch (DfException e) {//….. Do something here if an error happens} return docbasename; }}
Imports the Documentum
classes
Pass in the user
information
Session is created
Returns the name of the
docbase
5959
Demo
Apache AXISDocumentum Web
Services
6060
Demo
Microsoft Office2003 COM Add-InsCalling Java ApacheAXIS Web Services
6161
Building Web Services with .Net
Use the PIA, don’t use the DFC directly– Primary Interop Assembly (PIA)
Microsoft .Net Framework 1.1 is very stableIf you don’t have Visual Studio, you can use –
– Web Matrix (free!)– Borland C#Builder
Great for integrations with Microsoft Office, COM+, DCOM, BizTalk applicationsComing soon …
– Documentum ADO.NET Services (DAS)
6262
Web Services .NET Architecture
Page 62
Documentum
Microsoft .NET Server
DocBase(s)DocBase(s)
XML Applications,
Methods, Procedures
XML Applications,
Methods, Procedures
JavaBean or Web Service or
Applet (Client
Program)
JavaBean or Web Service or
Applet (Client
Program) DFC and/or
BOF
DFC and/or
BOFJDBCJDBC BOFBOF DFCDFC
DMCLDMCL
WSDLWSDL
.NET .NET
Web Services Client
SOAP ToolkitSOAP Toolkit
SOAP over H
TTPSO
AP over HTTP
6363
The PIA
Before the PIA, developers had to build their own COM components,
– .Net was not supported– Many unexpected errors occurred
The DFC 5.2.5 Primary Interop Assembly (PIA) makes the Documentum Foundation Classes (DFC) accessible from .NET code. The PIA integrates into Microsoft Visual Studio .NET and provides a layer through which .NET code can access DFC via the Documentum Java-COM Bridge (DJCB). It is optional and is not required by any Documentum products at this time. It’s only for .NET developers.
6464
The PIA (cont)
Behind the scenes, the PIA accesses the Documentum Java-COM Bridge (DJCB), which accesses the DFC Java classes. This means that DFC remains in a single source of implementation (in Java), but there are thin, efficient layers above that implementation, increasing its accessibility (first to COM-based clients, and second to .NET-based clients).Documentum tested the DFC 5.2.5 PIA with .NET 1.1. It does not support .NET 1.0. Documentum has not tested the DFC 5.2.5 PIA with Visual Studio .NET 2004.
6565
The PIA (cont)
Once you have completed your installation, you are ready to use the DFC PIA. It has been installed into the Global Assembly Cache (GAC) along with its XML documentation file and the associated Publisher Policy Assembly (PPA). A private copy of the PIA, the PPA and the PIA’s XML documentation is placed into your “Shared” folder along with an HTML Help file, Documentum.Interop.DFC.chm. Finally, the PIA installer takes care of promoting the location of the private PIA so that adding a reference to it in Visual Studio .NET is as straightforward as possible.
6666
PIA Tips
If you are using older .Net DFC components, migrate to the PIA Use the newer PIA build if you are using an older PIA controlled releaseMany resources
– Documentum Developer Website– Help file (Documentum.Interop.DFC.chm)– The document DFC_525_SP1_PIA_development.pdf
contains several C# and VB.NET samples. It can be downloaded from the Documentum Support Site
6767
Using the PIA
Add a Reference to Documentum.Interop.DFC.dll via the Add Reference dialog in Visual Studio .NET.
6868
Using the PIA (cont)
You will find this assembly on the main .NET tab of the dialog by scrolling down to list pane. Double-click Documentum.Interop.DFC and choose OK to establish the reference. Reference the DFC PIA namespace in your code.
– [C#]• using Documentum.Interop.DFC;
– [VB.NET]• Imports Documentum.Interop.DFC
6969
.Net Web Services Testing Utility
xxxxxxxxxxxxxxxxxxxxx
7070
Demo
Microsoft .NET Documentum Web
Services Demo
7171
eRoom and Web Services
eRoom is a Microsoft Centric application– Future versions will be J2EE based
Leverage eDK and eRoom SOAP/XML componentsYou can use J2EE or .Net Web Services
– .Net has the full feature set, but SAAPI is still an ASP/COM based
– J2EE is an option, but is limited for features
.Net is an option, but has some major restrictions
7272
eRoom and .Net Limitations
eRoom 7 is supported, eRoom is notYou cannot use .Net to implement eRoom Extensions directly nor can you use .Net in synchronous event handlers SAAPI must be called from a STA thread - this means that you should use COM+ applications for the core SAAPI functionsIn short, you will still need to use VB6 COM components with .Net together
7373
eRoom and .Net Tips
Use the eRoom.eRoomAPI Primary Interop Assembly, don’t use the COM componentsAlways use AspCompat=True in ASPX pages that use SAAPIThe ASPNET user must have “Act as part of Operating System” rights
7474
Real World Example – eRoom
7575
Demo
eRoom 7 EnterpriseCalling Microsoft
.NET Web ServicesUsing Extensions
7676
Web Services Products - WingSpan DocWay
Web services connectivity to DocumentumSimultaneous access to different versions of Documentum (4i & 5)Cross-docbase browsing supportCross-docbase, cross-version searching supportConnection-pooling supportWritten to utilize the latest functionality of Documentum applicationsNo EDM tag library or web development kit neededHighly portableExample web application code provided for Java, .NET and JSP environments
7777
WingSpan DocWay (cont…)
7878
Wrapping Up … Key Takeaways!
Documentum can consume or provide J2EE and/or .Net Web ServicesApache AXIS and WSAD are great for building Java Web Services for DocumentumUse the PIA for all of your .Net Web Services and ComponentsWeb Services will be part of the eContent Server in the FutureWeb Services can also be used/or called from eRoom, WDK, WebTop, DTC, SCS, WP and many other Documentum products.
7979
Questions?
To contact me –– Michael Thomas Mohen– Senior Architect, ESG– [email protected]
8080