Skip to content

Appukili's Weblog

Kilikonchal

Tag: technology

What is Enterprise Web Services a.k.a Content Web Services

****************************************** ***START UPDATE 10/3/2016*****************

LAPI and its client installer has become very hard to find. Moreover clients written in LAPI  in say Java/.NET will only work if your Livelink a.k.a Content Server is of version less than CS16.Readers who are new to LL programming is encouraged to read this to the approach and not to the exact lines of the code.What I mean is when you used to program in LAPI you were basically passing parameters to discrete calls by modelling it based on the webgui of livelink .SOAP based webservices called CWS is also the same,so if you do not try to do the task in the webgui and try to understand the business rules you will almost have no success in CWS too. OT is notorious for not putting fully functioning use cases and a walk through,so whenever possible I write code assuming the user has not worked in Livelink for X number of years and try to educate you all. Livelink,Content Server,Enterprise Server all of this has been Livelink’s marketing brand name changes over the years.CS i sused in many of the integrations like AGA, XECM, RMLINK  and you know you are programming against livelink if you see a link that looks like this  http(s)://somefriendlyURL/livelink.exe|cs.exe|llisapi.dll|cs.dll|livelink.In many places SAP/ SP /Exchange will be configured to talk to Archive Server and then they will use Livelink to read into archive server and turn that into LL objects for better presentment/RM and other aspects. The AGA product is moving away from LAPI(not sure totally or not) to REST API in LL.

**********************************************END UPDATE****************************

 

Many people seem to have understood my post  about LAPI 

The AGA (Sharepoint to Livelink Integration) product is the only officially supported OT product that seems to use old lapi binaries.Most of us have moved away for using it although when you are in a time crunch you can still use it.If you still want to use lapi make sure you are writing client code in java which takes care of most inconsistencies regarding 64/vs 32 bit J# problems.If you are a modern day .net buff see how old lapi can be run in new .net ways.

Back to CWS/EWS- Livelink is branded Content Server so it is no surprise that its API reflects that.The binaries that make up the wsdl is delivered without any additional installation  in the same file path as the livelink server is installed.So if you run your livelink in a IIS webserver,you just “expose” the  code from OT into a application.If you run your livelink in a Tomcat server then just dump the war file and TC will do the magic.The Web.Config in both he deployments make sure where it can talk to.For e.g in a livelink install if you see the Web.Config say localhost & 2099 when you call the beautiful code form your client it sends all that “stuff” into the livelink “server” listening on “localhost” and “2099”.None of this is hard coded and most livelink organizations will not use localhost resolution.And as a client api programmer you don’t need to worry too much.Ask for a webgui account before you start any livelink programming.It will keep you sane.What you are programming with a language is the same “business rules'” that livelink will throw to your code.Typical “new” programmer things like expecting category workspaces,enterprise workspaces to be 2004 & 2000 should be avoided the mistakes are very commonly seen in even vended applications.there are many livelinks in the world that do not have those ids.BTW like many others I also thought that to write java client code I had to have livelink running in a java app server.No I regularly now write .Net clients against a TC deployed WSAPI and java clients against a IIS deployed WSAPI. I also have written oscript based CWS things that is only needed when OT supplied stubs & proxies won’t cut a particular task.BTW when you install Records management,Physical Objects,Classifications they all deploy their CWS API.As your administrator to deploy that if you wanted to do programming against those functionalities . I advocate bundling  everything under one website it makes the admin’s life easier well they are unsupported by OT but I do it anyway

Once you are prepared to first write your lines of code you may want to understand what you are doing.

  1. Livelink is a protected/authenticated DMS application so it will check if you have a valid account and if you have permissions to a particular object. BTW OpenText is the company making these products as far as I know there is not a product(binary) in that name.many consultants I have worked with refers to “we have given stuff to OpenText” which ain’t happening because there is  nothing called that you can hand it to” In webgui the authentication is achieved primarily by putting a userid and password,almost nobody uses this method now or by a authentication service.In most companies if the application is IIS served that means you will almost for certain be vetted by IWA.  Unfortunately OT does not provide samples ,I have written things and many others have done it too.   nobody But ultimately your code has to pass a webserver and pass into the application layer
  2. OT markets a TC (java stack) application called OTDS .It is some very simple java code that interacts with livelink,active directory or other LDAP sources .It relies on your call being passed off to a OTDS server which uses industry standard methods to create a auth token.In many simple installs it is akin to the cookie that is given to your browser after login.OT provides samples using that.It also will be mandatory in several OT installs which are primarily not a DMS.Like SAP integration,AGA integration and so on.You now have “kewl” tools like Fiddler,Wireshark etc to debug many things
  3. If you  have a authentication token half the battle is one,you can now try simple things like adding folders,documents,applying categories to etc when you stumble simply bring up the web ui browser and see what you are trying is possible in “that” livelink.Because code you may have got working in another project may not because every livelink install can define its business rules differently 🙂
  4. These conditions can be tested in a matter of minutes by using  SOAPUI  .Once you have gotten in with a auth token and accessed enterprise workspace or perosnal workspaces,then switch to a java client ide or a .net ide . SOAPUI can only be used for certain aspect,things will get extremely complex when you encounter category/attribute data structures(funny the push to get away from llvalue data structures in lapi is still there albeit using data structures like AttributeGroups) so soapui will not cut it.

Other Buzzwords you may hear in a Livelink based project

  • REST API. OT has been forced by the programming world to have a REST API implementation available in kick butt livelink installs.Note every call with a REST API is akin to you accessing livelink via a browser so save yourself some head ache by not designing bulk loader things with it.You may want to show off your livelink in a mobile application.BTW I think AppWorks is the marketing hype name for that.
  • Search API-when you are in a livelink session and type a search term it is the Search API that is working for you.You can create cool search based apps with it.For heaven sake resist the temptation to write lapi or CWS code for livelink search it ain’t very easy and it si convoluted.
  • ELS API- It is the wrapper connecting Livelink and archive server .The definition is not technically correct.If you wanted a SAP system to use Records management or Business Work Spaces you would put this middle ware called (old name RCS). This is a solution… means utimately you will have to pay people who know SAP Basis configuartion & Functional  , Livelink configuration and Archive server configuration.Recently a guy asked me about CMIS  . I looked at it and I told him to concentrate on the 3 aspects and he figured it out note that CMIS is a industry protocol  and ot uses that in a ELS API layer for some objective I know not. Most solutions you will hear terms like Archive Link ,RM Link,ECM Link 

Happy Livelink API or CWS or EWS programming

Advertisement

Rate this:

appukili LAPI, livelink records management, Sharepoint Livelink integration, sso, web services 1 Comment October 18, 2014October 3, 2016 6 Minutes

Categories and Applying It explained

****************************************** ***START UPDATE 10/3/2016*****************

LAPI and its client installer has become very hard to find. Moreover clients written in LAPI  in say Java/.NET will only work if your Livelink a.k.a Content Server is of version less than CS16.Readers who are new to LL programming is encouraged to read this to the approach and not to the exact lines of the code.What I mean is when you used to program in LAPI you were basically passing parameters to discrete calls by modelling it based on the webgui of livelink .SOAP based webservices called CWS is also the same,so if you do not try to do the task in the webgui and try to understand the business rules you will almost have no success in CWS too. OT is notorious for not putting fully functioning use cases and a walk through,so whenever possible I write code assuming the user has not worked in Livelink for X number of years and try to educate you all. Livelink,Content Server,Enterprise Server all of this has been Livelink’s marketing brand name changes over the years.CS i sused in many of the integrations like AGA, XECM, RMLINK  and you know you are programming against livelink if you see a link that looks like this  http(s)://somefriendlyURL/livelink.exe|cs.exe|llisapi.dll|cs.dll|livelink.In many places SAP/ SP /Exchange will be configured to talk to Archive Server and then they will use Livelink to read into archive server and turn that into LL objects for better presentment/RM and other aspects. The AGA product is moving away from LAPI(not sure totally or not) to REST API in LL.

**********************************************END UPDATE****************************

Recently a friend started doing some stuff in lapi and got extremely confused. So I wrote this to alleviate the confusion and some common business rules people forget when they are programming in Livelink albeit oscript, lapi or web services.
Category-A template object of subtype 131 which again is a versioned object. If you find one and open up it with ascii editor like textpad you will see a lot of Livelink geek speak which we call assocs (asosh…)
Why does Livelink need it? So that people can create easy to understand metadata templates and search on them without resorting to developers or sql based reporting. It is so easy to create re-usable search templates in Livelink.
If I change the category definition from a version that is 8 and added a new field that is mandatory can I work it in
it really depends on your prowess. The minute the category was changed and the person submitted the change a new version of the category was added, all your objects that were “TAGGED” with that metadata template has become obsolete. This is when you see the “UPGRADABLE” icon. You can do it form the folder or form the category object. It will take some time. There are some best practice documents in the KB.
Common problem is if the container has the old category and if you or a program tries to add a new document with that category. Regardless of version you want to use Livelink is adamant it will want to use the new version. So you could run into 2 major problems, you cannot put that document unless you upgrade the category on the folder, or even after upgrading you are not supplying the mandatory value. Folders newly created will not want to insist on the mandatoriness although it is something you can change.
I have written lapi and oscript routines to handle all these situations.
Can you create a Category Subtype with lapi- sure but most of the time administrators do the category creation/updation etc, most of the time programmers are entrusted with the data part or “APPLYING THE NEW VERSION OF THE CATEGORY TO EXISTING OBJECTS”
I cut and pasted this from the code I put there
/*
HUGE DISCLAIMER
THIS DOCUMENT IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS “AS IS”
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANT ABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SAMPLE CODE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. BY USING THIS CODE YOU AGREE TO THE ABOVE TERMS.
*/
/* Appu Nair 10/16/2012
* Tested on Visual C# express on 64 bit Windows 7 against a Livelink 9.7.1 VM
* My project has been downgraded to .NET2.0 and I copied lapi dlls form another place
* I also added vjslib wjhich i found that I had installed here C:\Windows\Microsoft.NET\Framework\v2.0.50727\vjslib.dll
* Written to illustrate the user who was on this https://knowledge.opentext.com/knowledge/cs.dll/open/30474852
User wants to create a document and add 2 categories to it
Starting user’s please understand this a category object is a subtype=131 object which is a versioned object in Livelink
So when you look at a category in your system Assume the definition now contains something like ths.So in Livelink if you look at this category
*asuume it has a defid(dataid,objid) of 123456 and is version 210.Yes they took 209 attempts to come up with this category
*THIS PROGRAM DOES NOT CREATE THE CATEGORY OBJECT I DID THAT USING THE LIVELINK GUI.THIS IS ABOUT APPLYING A METADATA TEMPLATE TO OBJECTS
*IN LIVELINK SO PEOPLE CAN SEARCH ON IT LATER.
* My SAPCategory
* Name TEXT 32 CHARS
* AGE NUMBER
* GENDER TEXTPOPUP VALIDVALS={‘Male’,’FEMALE’}
*
* Assume your manager has asked you to
* make the category with a new TEXT field called ‘SAPCOSTCENTER’ and asked to make it manadatory.You did that and magically the new category version is
* now at 123456 version 215.
* My SAPCategory
* Name TEXT 32 CHARS
* AGE NUMBER
* GENDER TEXTPOPUP VALIDVALS={‘Male’,’FEMALE’}
* SAPCOSTCENTER TEXT mandatory 32 CHARS
*
* Now let’s look at it on run time. Livelink could care less if defaults were used when it encounters mandatoriness
* on folders or containers. The behaviour can be altered but no sane company does it.But Livelink will cry foul when this happens either from
* the gui or a program.
* Assume folder id called 109876 has the category version applied 123456:210 that is not upgraded. You say in your program to add a document with category
* 123456.Livelink once a category has been upgrded will force you to use the most current version. In this case your attempt will fail because it does not want
* you to create a document here with 123456:215 applied to a folder that has 123456:210.Moral of the story is if a category was upgraded it is the
* Livelink administrations job to make sure to pass it down to where it is used. Going by the same token if the sapcostcenter was mandatory and you
* did not supply an initial value you cannot get it to stick on the object. So more programming and intelligence need to be applied in your design
* In this e.g I will have another category with this characters
* MY IXOSCategory
* ArchiveID TEXT 6 CHARS
* DOcID NUMBER 64 chars
*
*/

If anybody was interested in the code that I developed for my friend it is here
“GOOD LAPI SNIPPETS FREE FOR REGISTERED USERS”

and under the link that says “How to Add more than One Category to a Object with LAPI”

Rate this:

appukili Uncategorized 4 Comments November 16, 2012October 3, 2016 5 Minutes

I have Other Things as Well

USEFULLNESS

  • 129,930 hits

Category Cloud

content server content server permissions content server privileges content server records management content server taxonomy content server upgrade content server web forms content server web form views content server workflow cs UI eventscripting impersonation java livelink LAPI livelink Livelink as store livelink forms livelink form views livelink permissions livelink records management livelink taxonomy livelink web forms restapi Sharepoint Livelink integration single sign on soapui sso Uncategorized web services workflows

Recent Comments

appukili on Agents Agents Everywhere
Raja on Agents Agents Everywhere
Take Some REST… on Code Demonstration Pages
Z on AddressBook
appukili on AddressBook
Create a free website or blog at WordPress.com.
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy
  • Follow Following
    • Appukili's Weblog
    • Join 29 other followers
    • Already have a WordPress.com account? Log in now.
    • Appukili's Weblog
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar