Code Demonstration Pages

Mostly this will consist of CWS or SOAP samples.My setup is against a CS16 computer with OTDS but when I test I make sure I can login as ‘Admin’.For ease I write this using the Visual Studio C# express.Note Java WSAPI clients has differing Syntax,my blog has some hints but for the most part it will be adaptable.Note programmers who work in this are encoraged to understand flow of your code into the livelink server see my posts on a proper way to interpret errors you are getting in your program.when time permits I will post a a flow diagram.

What is CWS ?   How do you DEBUG ?  How to look at a SOAP Envelope?
You just have to get the shell from OT for starting java dev. Java data structures are less forgiving in their get/sets than C# as well. Common misconceptions like to write java client livelink has to run in tomcat all that is not true,the server part of livelink can be anything and the webservices hosted either way and you can write .net clients and java clients

A few years back the OT community had a lot of programmers and they all contributed widely to communities.opentext.com .Very thoughtless of OT one fine morning they shutdown the site.Most of the code I wrote for public consumption I had in my personal workspace or google drive.This time I am just going to put them in my google drive.You just have to requests me to see it.Note I will not entertain any requests for obtaining software or consultation.I do this pro bono so I don’t lose touch.

How to Rename Nodes in C# Link Request by 
Workflow Service Example Link Request by
Categories/Attributes manipulation in C# Link Request by
Beginners parsing example to Categories/Attributes C# Link Request by
How do you manipulate Multi Valued Attributes( MVA) Java Snippet Link

 

Answering for a KB thread 
Beginners Adding a Version to a Existing File JAVA Link Answering for a KB thread
How to set Mandatory Attributes in a move

(No Not as simple as it sounds:)

Link Answering for a KB thread 
A C# example that shows SET parsing and MVA’s Link Answering for a KB thread 
Advertisement

Why Oscript solutions are not passé

Over the years in my work with OpenText Livelink I am fortunate to associate myself with like minds and who like me share their code,goodwill and advice selflessly .I cherish and hold their friendship above all professional accolades I have ever got.Recently I had lunch with Ossie Moore  Ossie’s LinkedIn it was very short and I would have loved it to last longer as we could talk shop endlessly.Most of what I write in this has bearing to our lunch and he did steer this post. Ossie  for people who do not know him is quite a character.Let’s say you had a requirement,most of us would probably settle for a pretty decent code either in oscript,lapi as that was the predominant development methods one had at the time.Not Ossie he would probably write our kind of code and before releasing it would have at least two more better implementations,he would have thought about the user coming through the web,the other interfaces LL explorer and so on.That is the difference.

Let’s look at ECM deployments in major organizations.

X Organization has identified a massive unstructured data problem.X has a new manager on the block who has had experience with a technology vendor.Insert <vendorname> here. This is how most ECM deployments happen a lot of people passionate in some technology who would solutionize the deployment to suit the vendor.Most of them are assisted by Gartner, Forrester those kinds .I started working in OT technology before these rating companies came up with a barometer of wants so I am going to continue with my cynicism.

So after X Organization will roll out a OOB approach ,people are brought in.Naturally if the product is user friendly and easy its use will grow.Simple things like user activity,data growth etc are good ways to identify its usefulness.Now most people would want to send the link of the objects hoping that it won’t break on re-organizing the structure or re parenting as most of document work revolves around.So you may want to invest on something that people have put thought on like a GUID based system(Livelink, DCTM).Frankly I know only Livelink and DCTM very little. I hate Sharepoint (we call it $carepoint) with a passion because the smallest of things are so difficult to get  done.Good UI all the world has gone for it anything complex you have to buy or build with an array of .net developers different frameworks the works.It also could be that I have only been programming in that and spending time in LL so over the years the idiosyncracies of builder,CSIDE none of these matter to me now because Oscript really has not changed every much.Oscript is just a huge possibilities language. One of my mentors very famous in OT circles John Simon would joke like this.You have a problem you try solving in Oscript.You will spend about 3 to 4 days on it later to find out that what you need is totally available,no need to kludge just poor documentation that is all.

So if you were eager to get into using livelink to its full extent do these things

  1. Challenge a OT person or a OT solution marketer to what they are offering you. Challenge them extremely hard if it is offered at $$$ a user or so.That is how they make their money on licenses.
  2. Challenge if the pitch is towards Oscript is bad that spoils your chances of upgrade.There’s an element of truth in that.I have seen people hacking their way into core code,weblingo such no nos that shows inexperience and desperation. Oscript is not understanding the creation of a request handler,webnodeaction or eventscripting it is an all round knowledge of the product the passion about the product.You can immediately tell if the programmer knows anything because if they start saying about new subtypes you may want to ask them what prompted them to create a subtype, because many times those people have access to the oscript tutorials and the “Hello World” of oscript introduces them to that.You really want a Oscripter who will follow what OT advises them of doing in that case it is very rarely  a bad fit.
  3. Challenge if the pitched solution ends up working only in the webgui what about EC,what about SOAP,what about REST,what about Search

Oscript has years to go if the LL solution is still being used by customers.It can be learned to work wonders for you.The other aspect and full credit to Ossie here is LL software is the most open product much more open than opensource a oscripter can see the entire internals of it so people like me,John,Ossie all have found bugs and we all engage the good OT developers on our finds.Most senior and passionate oscripters continue to do so.There ‘s so much openness and welcoming in the OT programming community,people like David Templeton ,Kyle  Swidrowich and a countless amount of good people who have been striving to keep this open and getting communities to try it out for a better product.They have helped me and a lot of others and you can also get in into the action.

You just need the drive and passion to master LL that is all it takes.Well that maybe true for any technology 🙂

AddressBook

Today I just chanced to see a post where somebody could not get the famous AddressBook module working.This module was part of the Oscript documentation and is usually introducing the user to the various concepts livelink programming entails.Like a “Hello World” for Oscript :).I thought of helping the person and the person had deleted the post.which was originally here  He later removed it because many people do not want to appear wrong.However there is no harm in asking or being wrong.failedaddressbook

 

Anyways I had done this for another friend so releasing into public domain here….

I did not fix many problems in the module so it is a challenge to the person doing it that is how I learned:)

To Undelete or Not

Many times Administrators and users do things stupidly and want to cover their tracks quickly and without creating unwanted attention.Most people working with livelink know that the application is responsible for the data integrity and referential integrity.So to do any proper reversal you would need to script something back.But again here you are at a disadvantage.If you resort to standard OT support the maximum you are going to get is “you have an error that is not easily fixable and we would recommend you to fix it with our professional services team”.To a org or a small company they do not have that many resources or money to do that,hence the administrator or  a power user turned developer would try to see if something can be done.Lo and behold the KB is consulted and most members who would like to show off will post in their comments.Now that goes for me also because there isn’t a day that goes by when I cannot respond to something.However I am very judicious when I tamper with the livelink database.That is really because I understand oscript and I see the many myriad transactions that happen when it is working,doing upgrades and such.But in many organizations people are well versed in Live Reports and many now have the Web Reports product which is an excellent alternative to certain kinds of programming or utility programs .This is where the start of the problems happen.Say you accepted a bad advice like fixing a column or data point in a table that the “learned KB people” advised,you would not probably notice this way into months or years at part of a upgrade so what you did in earnest will land you in irrecoverable or costly difficulties.So RESIST the urge to change values in OT given tables.If it is your table and you are responsible for it do so by all means.There is no problem with you playing in a VM and understanding it but just don’t think that touching llattrblobdata or llattrdata is all it requires to do category updates 🙂

That doesn’t absolve OT as a company,it is expected to do its fair share.Somethings might be

  1. Perhaps with support paid the customer gets 10 free incident fixes. OT absorbs the development  cost and passes the solution to a would be  admin/dev in the organization.
  2. A list of compiled easy to use reports and utilities,perhaps web reports, perhaps a compiled java app that uses REST or WSAPI or even a utility oscript module.
  3. Some re-assurance from support to quell the panic and perhaps advise the customer to do another thing like tell them a deleted user/users necessarily need not be considered a panic situation.

 

I had a short stint working with Documentum and I did not know if the utilities it delivered were high priced like what OT does but it had a language called DQL (Documentum Query Language).So any guys who is knowledgeable on the schema could run reports and turn them into DQL commands which would basically honor data integrity and referential integrity for them.This is in a way WR does but it takes enormous patience and complexity to work with it which again would mean should I have developers supporting my application.I would advise WR people in OT to provide clear crisp examples 1 to 5 liners that should work with any livelink any schema,kind of a pre built library more like the canned Live Reports

 

I tested a user deletion today and tried to see what all tables would be affected so for KB users if you want to see it is here.hopefully I will find a cheap hosting provider to put my content and not in KB as I have been burned in my earlier attempts.

“Why it may not be a good idea to update livelink tables.docx” can be accessed via the following link: https://knowledge.opentext.com/knowledge/cs.dll/Properties/61862916

 

 

 

Oscript what is it what and would I use it?

Oscript is  a 4GL that is the basis of the application that the OpenText company adopted when they chose to market Livelink the Document Management System.It is safe to say that anything  the Livelink product lacks and  is a valid requirement can be coded in this language.The power of the the Oscript language takes root in the philosophy that was prevalent in the 60’s . Oscript is a superior offering to traditional OOP languages such as Java or C++ that is what Pundits say.

To a trained Oscripter one is able to understand how livelink code is received as well as change it.Now change to any COTS product comes at a cost.That is where the strategy as well as overall grasp in the product comes into mind.If the organization has decided for itself that it will spend the big bucks on livelink, one approach is to identify the ways to use it more.Where the organization is going to make mistakes is when it sees the cost of the “customization”.Many decision makers wrongly decide to go after fly by night programmers/vendors to be totally left in the fray.OT has a professional vested interest to sell customers more code and services so I have been in decisions where sales and marketing  will say do not customize livelink, but that is only half truth in them.If you buy these OT customizations, they are almost certain to be written in Oscript .In many cases it would have been written by senior Oscripters with thought on maintenance aspects  and upgrade ability as well.The same kind of service can be bought by other Oscript houses,in many cases these are extremely talented ex OT ‘ers. Many of the Professional Services modules sometimes outgrows the intents and becomes a marketable module as well.I have no knowledge and am just speculating on that.Once you have identified and  decided to use livelink the best avenue is to hire or ask services of reputed vendors.Modules that contained Oscript code that I used to code in 1999 (first time was on a livelink 8 system) livelink 9.1 version I can almost compile in the modern 10.5 version.My entire career was  and is fruitful because I tried to interact/collaborate and share with the OT team in the KB as well as smaller websites like Greg Griffiths.I was also able to mentor myself amongst very die hard oscripters that I knew from work and just by tracing code to find bugs that needed closure before OT could provide fixes.The knowledge of OT code also allows me to become a better application architect,administrator and integrator.

If the organization is strong in Java and .Net skills then note that the user interface at this time cannot be changed using those languages,however you may use exposed API’s to make functioning applications that use Livelink as the data store

Typical things organizations can and should do.

  1. Create implementations of Nodes just like Folder or Document if there is a need for it to be there.Just because OT shows you a “Addressbook” or “Contacts” module not every livelink installation in the world needs new subtypes.It is there if you want to use it ,if there is a complex business requirement that involves a “document” like implementation or a “folder” like implementation.Do search in the KB for such terms as “invasive customizations”, overrides,orphans,subclasses, customizationsRT, weblingo customization.
  2. Add Commands in the Nodes these are basically very easy to do in a short order.These two are taught very nicely in class as well.
  3. Put a lot of functioning logic into workflows also heard as event scripting.
  4. Write code so that livelink can interact with other systemslike using the POJO object.
  5. Write agents,distributed agents,expose to columns and facets api something that OT does not give you OOB.
  6. Extending SOAP and REST can only be done using Oscript.If you are a shop who has a need to program a integration using java or C# and you see a “GAP” in existing offering it is rather easy for a Oscripter to extend that.

Opentext Programmers have black boxed thing so that many things acts as internal API’s.For e.g we are able to do work without understanding how the “Node” itself is created in livelink. Other examples are the way Oscript can talk to the search system.

Not many people know that livelink uses a api to search.

Out of the world Oscript Offerings.

Christopher Meyer a Long OT veteran his website . It is un believable stuff that I have seen.

Patrick Vitali the maker of AnswerModules

IDE’s one can use

CSIDE a eclipse jar file for versions CS10.5

Livelink Builder CS10 and Versions prior.

Event Scripts Debugging

 

I LOST ALL CONTENT WHICH WAS STORED IN COMMUNITIES.OPENTEXT.COM.IF YOU ARE A STARTER READING THIS AND WOULD LIKE TO SEE THE ORIGINAL CONTENT DEPENDING ON TIME I HAVE I CAN SEND YOU SNIPPETS.LEAVE A COMMENT TO SUCH EFFECT.

Getting Old.One of the most productive ways one uses Oscript is to create Event scripts in livelink workflow.

Workflows in livelink are perhaps the most easy ways to impress your clients and a lot of partners and ecosystems are built on top of that.Event scripting is taught or learned by one who has been introduced in livelink.But in a nut shell if you know how to paint a livelink workflow and thought of somethings like,how I wish OT gave me code to do this small thing which I am trying to do in a “kludge”. You may have noticed the “kludge” with how one uses XML WF Extensions ,to get to a document in the attachments area and do something with it.So a XML WFExt map looks very weird there will be a Export step,modify step for anything/ everything you want with it kind of very silly when you look at at the map.Fortunately when I was learning this XMLWfExt was high priced so we did not get to use it,hence we had to do it via event scripting. Once you get hooked into it man are you gonna love it. WR getting to attachments is also another inefficient way to do your stuff but the standard by line is oscript can break your investment.But when anybody wants anything done they would go to OT or Vendors who would you guessed it use Oscript to provide the magic.There is nothing more untruthful than this . Oscript when learned and done the correct way will survive years.To basically make a point I am going to attempt to see if a eventscript I wrote on 9.1 Sp3(circa 2003) can be made to work in 9.7.1(2013).I will even try to make it work in CS10 ,but then I will have to spin up a 2008 VM and so on.

Task At Hand:WF is initiated with a custom title made up of attributes, strings etc. The WF has four forms loaded into them and the template has a label and a field called TITLE  My job is to take the title and replace it on the form fields. Seems pretty  easy to do.

See My Map-10-24-2013 4-26-10 PM

My template looks like this and I tried not to write code it does not work when initiating the workflow

2

Ok so as most of developers do I put a break in that script with just a echo statement to start doing my work so that I can see the variables etc. so as most new people will face I get this

3

and more importantly the debugger my task info is an ERROR.Without which I cannot proceed.I say this after 10 years because now I know how to do this.I did not at that time and so many of you will also go thru this.

4

So what do you do.After pondering for a while I resignedly said let me put it in another step and tell the user that it is a livelink limitation you will get an extra step in your workflow so click it to run the event script

so here’s my experience when I put the event script on the next step

5

Now we still have a error but that is actually joyous because we can now start debugging

6

But look at the TaskInfo variable now it has what we are looking for and trying to debug all the rest of the script

7

I managed to figure out the rest with echos etc and finished the script

Now HERES WHAT THE UNBELIEVABLE PART WAS .I JUST EXPERIMENTED PUTTING IT BACK TO HOW I WANTED , TO THE START PLACE AND IT WORKED

Since the project was a go I was very overjoyed.Later as I started reading articles by Jeff Lang,a great guy,who incidentally wrote livelink workflow he kind of explained the C++ firing and so on.We are friends and he has helped me and many other people when we got into a bind.I loved a post where he kind of admonished the developers who wrote XMLWFEXT….:(

See his post in 2007 I wish I had asked him in 2003 or learned it the proper way 🙂

In continuation here’s what you will definitely succeed start small,take baby steps and try some of these best practices

  1. Event scripts can be debugged only if the work is committed in the database,means it has to initiate.What I mean is basically in WWORK the row is available.what looks as a “chicken & egg” situation may only be in development and really not in the real wf operation as I found by trial and error.Nowadays there is the IH step which you can put and assign it as a scheduled time.At the time I was doing this I did not have the liberty of such a step.
  2. Do not chain event scripts into the start step,milestone that kind it makes debugging difficult.Start to a milestone these are auto done steps.Milestones later in the map should not have problems.
  3. Do not have many things that a IH will do.Break it into manageable pieces.You will be grateful you did.

See where i posted this 

A really bad WF map made up of XMLWFEXT,WR,eSIGN etc the reason why the “kludge” is arrived is because of the designer not resorting to event script programming.Nor is the logic very sound.Stay away form those kinds.A business user should understand the wf map that is what the process is designed to support.Whenever I design a map I give the business user a standard swim lane diagram I find in the web.9 times out of 10 the map becomes much better that way.I also encourage my users to paint and change maps so it does not become a specialized livelink job.

8

LAPI What is It and Should I use it ?

Update:06/12/2017

Realized that OT is supporting old LAPI for their product called Enterprise Scan,Escan used to be completely a client app so if the Livelink server connecting to it is CS16 then OT ask you to install a module.Surreptitiously they call it “Private Bridge Interface” which is all the LAPI Oscript code conveniently bundled into its own Ospace.My guess is this will continue until ESCAN and AGA and other OT bread winners convert to SOAP or REST.

 

Update:12/29/2015 OT has announced that with the launch of CS 16 there will be no server side oscript to receive lapi calls so don’t waste your time reading this or programming in it.Just keeping this for vestigial reasons.

At time of this writing circa Feb 2013. Open Text’s livelink has been in the market for about 18 years and a fairly loyal fan share.The core software was always enhanced /added on by Oscript but for programmers who wished to do utilities such as adding user’s en masse, deleting things en masse et there was LAPI which stood for Livelink Application Programming Interface  .In its inception what I used to see in around 2000,you could program in Java,which I did,there was VB6,there was then C & C++. Vended products such as Livelink Explorer,Authorlink, Autocad Integration etc was around there.In a nut shell these were the steps that one used to take.

  1. Install or copy lapi client files in your computer
  2. Write a program
  3. Compile it and run.

@RunTime the first call which everybody knew as Session creation was akin to Tel netting to the livelink server on Port 2099(default livelink server listening port). As time went by OT added a lot of calls at the LAPI server side so people built a lot of cool things.But there were problems in a way that as modern OOP languages came along they abhorred the idea that livelink was giving them Data structures(LLValue Objects) and making them work thru that.So OT did a small stint they loaded the LAPI libraries on top of a web server and called it Live Services but at that point one could write a web service call.I think it died like the OT’s foray into JavaObjects to replace or do side by side coding as in Oscript. I never understood what one would use JavaObjects for. Note I am not talking about the Oscript to Java Bridge which I have messed with and is very useful.

With the release of 9.7.1 they bundled livelink web services as part of the livelink install the idea bing a company would just use the existing IIS or Tomcat investment and start creating a plumbing conduit into livelink.At CS10 they stopped making a installer for LAPI. I am told that this is because  they do not have the development resources to make libraries in several different languages.

The new web services are strongly typed,you never need to guess what you ask livelink and what you get in return.But while that is easy for a programmer to say and do the majority of programmers are called /hired to do something against livelink has no clue how livelink works.So that is where beautifully written /working hand holding programs are needed.Also a programmer need to understand what he is trying to do which may be as simple as logging into livelink and observing the different things.Jason Smith,Scott Grasley,Kyle Swidrowich these are all great OT programmers who are putting such structure into the new web services paradigm.Whenever I find time and needs some challenging stuff I also do put up some samples but most of my time nowadays are in oscript.

Coming back to LAPI the server side remains and will there be for what I can see. If OT basically puts their foot down and remove the API on the server then your program will not work. But then gain it probably is so far around you have no cause for concern.Not having an installer should be less worrying as any old API edition will work in java or a .NET language.That is what I do.I have a new 64 bit computer.I just copy the dll’s from a 32 bit machine and work on a .Net 2.0 framework.I also lost touch of java somewhere along the way.I guess I will have to brush up because OT is going to get us all programming in Eclipse 🙂

So in conclusion it really is your preference on how to code and how well to save your investment

A LAPI call received in the heart of livelink in oscript.If the AccessEnterprise call one sample was not there your investment would suffer

apicall

Going by the same token a web services call received in livelink

webservicecall

As you can see when you program in a client application your call needs to come into livelink.In web services they use the web server to get into livelink code.

At this point you are able to create a lapi code page and call the web services code or a web services code piece and call lapi .Increasingly over time lapi server side will cease to be and no effort will go into its up keep.In older versions of web services they used the LAPI dispatcher to send in the web services command now I don’t think it has a dependency on that.

Chris Morley’s comment a little more computer trained person than me

https://knowledge.opentext.com/knowledge/cs.dll?func=ll&objId=33077212&objAction=viewincontainer

Almost Diatribe from an angry user it is fun