28
Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February , 2007 or: 50 Ways to Integrate with the Content Server

Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

Embed Size (px)

Citation preview

Page 1: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

Intro to Integrating Applications with Stellent

Brian “Bex” HuffChief Software Architect, Bezzotech Inc. February , 2007

or: 50 Ways to Integrate with the Content Server

Page 2: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

2

Mainly covering the Stellent Content Server (SCS)• Some IBPM

Basics of integrations• Front end: your application to the SCS• Back end: SCS to your application

50 ways to integrate• And 20 of them are SOAP!• Fairly technical overview

Recommendations• Which of the 50 is right for you?

Agenda

Page 3: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

3

Integration Basics

SCS is a service-oriented architecture• Easy to consume services from remote applications (front-end)• Easy to customize services (back-end)

Front End Integrations• Execute services, access content from other applications

• J2EE Portal, ASP.NET, Desktop application

• Run services, receive data response, draw an interface• Example: run a search, perform a check-in, access documents from CRM

Back End Integrations• Add services, modify existing services• Access remote data or applications• Example: custom check-in logic, RSS feeds, LDAP

Page 4: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

Front-End Integrations

Page 5: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

5

J2EE: Content Integration Suite (CIS)

Standards compliant J2EE application for Stellent UCM• Add-on product for Stellent

Compatible with, and supported on, major app servers• IBM WebSphere, BEA WebLogic, SunOne, Plumtree, Tomcat

Complete coverage of Stellent API• Common services available as objects-oriented API• Can execute any UCM services• Can also interface with IBPM

Page 6: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

6

J2EE: Content Integration Suite (CIS)

CIS is an application that connects to the content server• CIS server connects to Stellent• CIS client is used in your app to connect to CIS server• CIS server caches results for faster performance in peak hours• Supports several kinds of J2EE connectors

Content Portal Suite (CPS) for J2EE Portal Server• Uses CIS to connect to Stellent• Contains several sample portlets for interacting with Stellent• Search, Library, Contribution, Workflow, Admin, Image Server Search

(I/BPM),

Federated Search (Combined search over I/BPM and UCM)

Page 7: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

7

CIS Integration Options

1. J2EE Application Server • CIS client uses EJBs to communicate with CIS server

2. J2EE Portal Server • Use CPS portlets to make calls to CIS server• May also use BEA’s Service Provider Interface (SPI) with CPS

3. Tomcat, other basic Servlet containers• CIS client uses RMI to communicate with CIS server

4. JSP Taglibraries • Quick access to CIS through JSP tags

Page 8: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

8

CIS Integration Options – cont.

5. Spring Framework• More coherent, flexible, maintainable than straight JSPs

6. J2EE Connector Architecture (JCA) interface for CIS• For J2EE purists, disabled by default for performance reasons

7. Java Messaging Service (JMS) interface for CIS• Get higher performance with asynchronous messages

8. Stand-alone Java application• For Plain Old Java Objects (POJOs) without a J2EE framework• Initialize CIS server directly for a direct connection to Stellent

Page 9: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

9

Simple Object Access Protocol (SOAP)

An open XML based protocol for application integration• Typically over the web (HTTP), or in messages• Fundamental part of Microsoft’s .NET framework• Toolkits exist for almost every language and platform

Available as a free add-on (extra) for Stellent• Download the SOAP component if version is before 7.5• SOAP support built into 7.5, but you still want the WsdlGenerator

component

Web Services Description Language (WSDL)• Helps SOAP toolkits parse XML into easy to use objects• One object to execute the service• Binds the XML request and response into data objects• Much easier to use than pure XML

Page 10: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

10

SOAP Search Request

<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <idc:service xmlns:idc="http://www.stellent.com/IdcService/" IdcService="GET_SEARCH_RESULTS"> <idc:document> <idc:field name="QueryText"> dDocTitle &lt;substring&gt; `test`</idc:field> <idc:field name="ResultCount">20</idc:field> <idc:field name="SortOrder">desc</idc:field> <idc:field name="SortField">dInDate</idc:field> <idc:field name="SortSpec"></idc:field> <idc:field name="StartRow"></idc:field> <idc:field name="PageNumber"></idc:field> </idc:document> </idc:service> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 11: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

11

SOAP Search Response

<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <idc:service IdcService="GET_SEARCH_RESULTS"> <idc:document StartRow="1" EndRow="20" PageNumber="1" NumPages="1" TotalRows="8" TotalDocsProcessed="377" dUser="sysadmin"> <idc:field name="SortField">dInDate</idc:field> <idc:field name="EnterpriseSearchMaxRows">4</idc:field> <idc:field name="ftx"/> <idc:field name="ResultCount">20</idc:field> <idc:field name="TranslatedQueryText">dDocTitle <substring> `test`</idc:field> <idc:field name="QueryText">dDocTitle+%3csubstring%3e+%60test%60 </idc:field> <idc:field name="SortOrder">Desc</idc:field> <idc:field name="AdvSearch">True</idc:field> <idc:resultset name="NavigationPages"> <idc:row PageNumber="1" StartRow="1" EndRow="8"> <idc:field name="HeaderPageNumber">1</idc:field> <idc:field name="PageReference">1</idc:field> </idc:row> </idc:resultset>...

Page 12: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

12

SOAP Search Response – cont.

... <idc:resultset name="SearchResults"> <idc:row dDocType="ADACCT" dRevisionID="1" dWebExtension="txt" sCollectionID="" dOriginalName="test.txt" dDocName="1234" DOC_FN="c:/stellent/weblayout/groups/public/documents/adacct/1234.txt" dFormat="text/plain" dPublishType="" dID="554" dDocAuthor="sysadmin" dOutDate="" dGif="adacct.gif" dExtension="txt" dInDate="8/8/05 1:49 PM" URL="/stellent/groups/public/documents/adacct/1234.txt" AlternateFormat="" dDocTitle="test document" dRevLabel="1" dSecurityGroup="Public" dRendition2="" dRendition1="" > <idc:field name="VDKSUMMARY">This is a test</idc:field> <idc:field name="SCORE">1.0000</idc:field> <idc:field name="AlternateFileSize">0</idc:field> <idc:field name="VaultFileSize">14</idc:field> <idc:field name="WEB-CGI-ROOT">/stellent/</idc:field> <idc:field name="WebFileSize">14</idc:field> <idc:field name="xComments"/> </idc:row> </idc:resultset> </idc:document> </idc:service> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 13: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

13

SOAP Benefits

All Stellent services available through SOAP• Can create XML request manually, or use WSDL• SCS 7.5 – pass IsSoap=1 into any URL or request to get back SOAP

All the benefits of XML and HTTP• Simple, extensible, used almost everywhere• Most developers comfortable with the technology

All the drawbacks of XML and HTTP• Stateless requests – both good and bad• Standard security problems with HTTP• Verbosity presents performance challenges

• Don’t execute services until you need to

Page 14: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

14

SOAP Integration Options

Third-party toolkits exist for most programming languages

9. Java (Apache Axis)

10. C#

11. PHP

12. Python

13. Perl

14. C++ (Apache Axis)

15. Visual Basic (MS Soap Toolkit, Pocketsoap)

16. VBScript (XmlHttpRequest ActiveX object)

17. JavaScript (using AJAX toolkits)

18. Command line apps (curl, wget, with IsSoap=1 in URL)

Page 15: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

15

SOAP Integration Options – cont.

Even more third party toolkits:

19. VB.NET

20. ASP.NET

21. C (csoap)

22. Ruby (built-in)

23. Flash (Flash MX Remote Scripting)

24. Appletalk

25. Tcl/Tk

26. Smalltalk

27. Ada

28. COBOL (partial)

Page 16: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

16

Command-Line Java Applications

Included with Stellent Content Server• Not for advanced integrations, but can get the job done

29.IdcCommand single service request• Make IdcCommand file to run an archive, check in a file• Create a shell script to run the command• Schedule that script with cron, or Windows Scheduled Tasks

30.IdcCommand batch files• Multiple service requests: configure metadata, users, check in content• Resubmit a large number of items for conversion

31.Batchloader• Check in large numbers of items• Can generate the batchloader file with a script

Page 17: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

17

ActiveX Connectors

Older than .NET, but still useful• Legacy VB systems, VBScript in Office Applications

32.IdcCommandUX on an ASP• SOAP-like interface, but with more features• Used in Site Studio

33.IdcCommandUX in a VB/COM Application• For admin tools only

34.IdcClient in a VB/COM Application• For desktop applications: Publisher, Site Studio use it• Can pop open a browser window for content check-in

Page 18: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

18

Very Lightweight Integrations

For situations where you only need to do something small and specific• SOAP and CIS are sometimes overkill• Perhaps your developers hate XML?• Perhaps your integrators don’t have time to write an application?

35.Output content as RSS (RssFeeds component)• Output search results, static lists, log files

36.Import RSS content (RssFeeds component)• Download a feed from another server, display in SCS

Page 19: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

19

Very Lightweight Integrations – cont.

37.WebDAV• Interface with Windows Explorer, Microsoft Office• Very easy to use interface, but limited functionality

38.Place IsJava=1 in the URL• Returns a HDA data dump for debugging, or scripts

39.Display just SCS forms without navigation links• Embed form in an IFRAME, or pop up a separate browser window• Pass coreContentOnly=1 in the URL• May additionally pass ClientControlled, but is trickier• Publisher and Site Studio sometimes use this technique

Page 20: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

Back-End Integrations

Page 21: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

21

Security Integrations

Security model just as customizable as everything else in SCS

40.Custom User Providers• Connect to LDAP/Active Directory• Do complex mapping from LDAP groups to SCS roles and accounts• Mostly Java code, plus some configuration

41.Custom Web Security Plug-Ins• For custom Single-Sign-On integrations at the web server• Examples: SSL certificates, Kerberos tokens, Nettegrity Site Minder• Mostly C++ code, fewer resources available at this level

Page 22: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

22

Custom Java Components

Need to know Java, and Stellent Component Architecture• Anything you can do in Java, you can do here

42.Add new services• Run reports, process content through custom life cycles, display data

43.Customize existing services• Generate a list of ‘related items’ when you get content info about an item

44.Execute code when specific Filter Events occur• When the server starts-up• When an item enters workflow• When an item is checked-in or deleted• You can alter how the service is processed, or run independent code

Page 23: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

23

Remote Repository Integrations

Need to know Java, and Stellent Component Architecture

45.Custom Database Providers• Connect to multiple databases

46.File Store Providers (SCS 8.0)• Alter how and where content item files are stored

47.Records Management Agents• Manage remote data as a record, even if it isn’t in the SCS repository!

48.Use Publisher to output content, and XML• Import the data into another search engine

Page 24: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

24

Site Studio Integrations

For integrating Site Studio web sites

49.Use SSPU to output pages to remote web farm • Export Site Studio pages as static HTML for maximum performance

50.Site Studio Extensible Elements• A custom contribution element, accessible from Contributor application• The ‘element’ is a URL to a web form you created• Users fill out values in your custom web form• Upon submit, your web form returns text to the Contributor

• Uses a special JavaScript method

• Useful for allowing users to generate raw HTML in a controlled manner• Parameters for Flash plug ins, Applets, JavaScript, or any arbitrary chunk of text

Page 25: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

Recommendations

Page 26: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

26

What Should You Use?

Are you integrating a Java front-end to the SCS?• CIS/CPS/Spring is probably what you want• SOAP with WSDLs a good choice for lighter integrations

Are you integrating a non-Java front end?• SOAP is the best choice

• WSDLs if you choose, not always the best idea

• IdcCommandUX has extra features, useful on an ASP• Command-line apps discouraged, but sometimes useful

Are you writing a desktop application?• SOAP is a good choice for behind-the-scenes integration• IdcClient if you wish to have a browser-like interface for check-ins• WebDAV is too rigid for extensive use

Page 27: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

27

What Should You Use?

Are you integrating Stellent with a remote repository?• Need Java component: custom Services, custom security plug-ins• Remote databases, remote user repository, email server• Connect with standard Java libraries from your code

• JDBC, LDAP, IMAP, SOAP, RSS

• If you need Records Management, use Agents

Do you want to execute code when specific events occur?• Example: on startup, every five minutes, when content is checked-in or

deleted• Need Java component: Filter or chained Service Handler• Hundreds of filter events and services available for customization

Page 28: Intro to Integrating Applications with Stellent Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February, 2007 or: 50 Ways to Integrate with

28

My Company: http://bezzotech.com

My Blog: http://bexhuff.com

My Self: [email protected]

Please complete the session survey before you leave today

Visit the Stellent Solutions Center & Partner Expo to learn more!

Access this presentation* at:

http://www.stellentcrescendo.com/Crescendo/Sessions/index.htm

*Log-in and password required to access presentations (watch for an email containing your codes)

And finally –Questions!