290 likes | 622 Views
Intro to Integrating Applications with Stellent. or: 50 Ways to Integrate with the Content Server. Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February , 2007. Agenda. Mainly covering the Stellent Content Server (SCS) Some IBPM Basics of integrations
E N D
Intro to Integrating Applications with Stellent or: 50 Ways to Integrate with the Content Server Brian “Bex” Huff Chief Software Architect, Bezzotech Inc. February , 2007
Agenda • 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?
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
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
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)
CIS Integration Options • J2EE Application Server • CIS client uses EJBs to communicate with CIS server • J2EE Portal Server • Use CPS portlets to make calls to CIS server • May also use BEA’s Service Provider Interface (SPI) with CPS • Tomcat, other basic Servlet containers • CIS client uses RMI to communicate with CIS server • JSP Taglibraries • Quick access to CIS through JSP tags
CIS Integration Options – cont. • Spring Framework • More coherent, flexible, maintainable than straight JSPs • J2EE Connector Architecture (JCA) interface for CIS • For J2EE purists, disabled by default for performance reasons • Java Messaging Service (JMS) interface for CIS • Get higher performance with asynchronous messages • Stand-alone Java application • For Plain Old Java Objects (POJOs) without a J2EE framework • Initialize CIS server directly for a direct connection to Stellent
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
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 <substring> `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>
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> ...
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>
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
SOAP Integration Options • Third-party toolkits exist for most programming languages • Java (Apache Axis) • C# • PHP • Python • Perl • C++ (Apache Axis) • Visual Basic (MS Soap Toolkit, Pocketsoap) • VBScript (XmlHttpRequest ActiveX object) • JavaScript (using AJAX toolkits) • Command line apps (curl, wget, with IsSoap=1 in URL)
SOAP Integration Options – cont. • Even more third party toolkits: • VB.NET • ASP.NET • C (csoap) • Ruby (built-in) • Flash (Flash MX Remote Scripting) • Appletalk • Tcl/Tk • Smalltalk • Ada • COBOL (partial)
Command-Line Java Applications • Included with Stellent Content Server • Not for advanced integrations, but can get the job done • 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 • IdcCommand batch files • Multiple service requests: configure metadata, users, check in content • Resubmit a large number of items for conversion • Batchloader • Check in large numbers of items • Can generate the batchloader file with a script
ActiveX Connectors • Older than .NET, but still useful • Legacy VB systems, VBScript in Office Applications • IdcCommandUX on an ASP • SOAP-like interface, but with more features • Used in Site Studio • IdcCommandUX in a VB/COM Application • For admin tools only • IdcClient in a VB/COM Application • For desktop applications: Publisher, Site Studio use it • Can pop open a browser window for content check-in
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? • Output content as RSS (RssFeeds component) • Output search results, static lists, log files • Import RSS content (RssFeeds component) • Download a feed from another server, display in SCS
Very Lightweight Integrations – cont. • WebDAV • Interface with Windows Explorer, Microsoft Office • Very easy to use interface, but limited functionality • Place IsJava=1 in the URL • Returns a HDA data dump for debugging, or scripts • 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
Security Integrations • Security model just as customizable as everything else in SCS • 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 • 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
Custom Java Components • Need to know Java, and Stellent Component Architecture • Anything you can do in Java, you can do here • Add new services • Run reports, process content through custom life cycles, display data • Customize existing services • Generate a list of ‘related items’ when you get content info about an item • 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
Remote Repository Integrations • Need to know Java, and Stellent Component Architecture • Custom Database Providers • Connect to multiple databases • File Store Providers (SCS 8.0) • Alter how and where content item files are stored • Records Management Agents • Manage remote data as a record, even if it isn’t in the SCS repository! • Use Publisher to output content, and XML • Import the data into another search engine
Site Studio Integrations • For integrating Site Studio web sites • Use SSPU to output pages to remote web farm • Export Site Studio pages as static HTML for maximum performance • 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
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
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
And finally –Questions! • My Company: http://bezzotech.com • My Blog: http://bexhuff.com • My Self: bex@bezzotech.com • 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)