Content Server OEM Edition

Stumbled on this today.

Uses Lucene instead of FullText.

The State of Affairs

Its been a busy couple of weeks at work, working on weekends and dangerously veering on the verge of full-blown Carpal Tunnel Syndrome.But the dividends were enormous, in terms of learning and a reasonable comfort level with WDK. I was planning to write something about DataBound Controls , but that will have to wait till I can write some example code for that.So here are some really small tidbits . Pretty basic ,but useful all the same:

1. Call a WDK component directly by calling the following URL : http://{myserver}:{myport}/MyApp/component/{componentid}?{param1}={param1’s value}&{param2}={param2’s value} where the part : http://{myserver}:{myport}/MyApp is commonly referred to as your Virtual Root and param1 and param2 are parameters that your component contract specifies. Great for quickly testing code changes.
— But can an action be called this way?

2. If you get a java.lang.outOfMemory error on application startup, x times out of 10 it will be a problem with one of your config xmls : missing tags, tags left open etc. (x in my case was 10 :-) ).

3. Usually retrieving and reading a value, which has a single quote in it, through DQL will work, but its when inserting that it goes down with a bang.Quote-safe your values by escaping ‘ with ”’ (2 single quotes around it).Escaping wild cards in a LIKE clause are a different story, and you can read it in your friendly neighborhood DQL reference manual.

4.Ok this one is dumb and should be common knowledge : Refresh your config files without restarting the server by calling http://{myserver}:{myport}/MyApp/wdk/refresh.jsp

6. Wrap some sequence of statements that you are going to be writing a lot of times again and again in your code, like closing collections and executing queries and getting IDfCollection objects , in some utility methods of your own, so that you can close those pesky collections by calling MyUtil.closeIDfCollection() instead of repeatedly writing

try{
dfColl.close();
}catch(DfException e){
//Your catch you decide, what to do with it.
}

5. D6 is coming and D5 still manages to kick my behind in my moments of vulnerability ;-) .Sorry state of affairs, I know. Head over to Word of Pie to know more.Lets wish for better api docs this time.

Extend and Embrace ;-)

Yeah well, check this out :

Distant Hills : pulvis et umbra sumus

Distant Hills

 

Unmarred green mountains, dark skies, grey mist,waterfalls.The stuff of weekends ;-) . Photos from a trip that I came back from , this morning.Reason why I have not been able to post much here lately.

Since I am back , next on my agenda are DataBound Controls.Easy to use, confusing as hell.

Setting up your WDK or DFC project in Eclipse

Its amazing(well not that amazing, but hey it still is pretty good.) what you can really find when you are really looking for it.Today I was looking up some stuff on how to get started with WDK dev using Eclipse for some people in my team , given that they are new to Eclipse, and I fell across some articles on the topic, where else, but at EMC Developer Network.Back when I started, I spent a lot of time setting my project up in Eclipse and I came up with some rickety arrangement that barely worked.With time I kept refining my setup and now I think I have a cool ,easy setup to work with, inside Eclipse.

So without much ado, let me direct you to what I found :


Configuring WDK Development Environment in Eclipse

Setting up a DFC Development Environment in Eclipse

Couple this with the plugins I mentioned earlier and a File Synchronization plugin thrown in for good measure and your Eclipse should start generating cool.

Although IMO this is isn’t one size fits all. Your project structure may vary or you might be comfortable with something else, in any case a little improvisation never hurt anybody.I myself work on an improvised version of sorts of the configuration given above. So, take this as a guideline, and play around with it.

Documentum Community, Support Forums

Here is where I would turn to when I am all but ready to tear my hair out.Yeah, Documentum does this to you.Having worked with both webtop and desktop customizations I can solemnly swear to this fact.But again here is where I would turn to when in dire straits :

There are a lot of smart people out there who can help you and plus if you can take some time out to go through the archives, you might just find the solution to that maddening problem already there.

Help, I need somebody
Help, not just anybody
Help, you know I need someone, help

– Beatles

WDK, Webtop Customizations – How to get started?

So a couple of days ago I decided to mend my sketchy knowledge of WDK and jump headlong into figuring it out. Instead of going the trial-and-error way I figured it would be really nice for a change to write some code and not having a monster of an error page pop out a 100 times before ultimately getting it right.Thus my quest to find some good learning resources, tutorials sort-of-thing on WDK and Documentum in general.

EMC have a great thing going at EMC Developer Network. If you are just starting out, you just cannot afford not to have an account at EMC Developer Network.A couple of really good resources for beginners that I found there :

1.Your first WDK Component series : What else but the quintessential “Hello World” as our first step.

Your First WDK Component Part 1 – Hello WDK World
Your First WDK Component Part 2 – Adding Controls
Your First WDK Component Part 3 – Using Datagrid Controls

2. Grokking the Paradigm – a WDK tutorial by Dennis Dawson. Download this whole thing, great as an overview.

3. WDK Developer Help Plugin : I know I am repeating myself , but I really cant stop ranting about it.It is comprehensive, easy to understand and as a plugin, its available as a quick reference when I want to look something up while writing code.I havent stopped using it since I installed it. Its a one stop shop for all things WDK, until I find something better.

Eclipse Plugins for Documentum Development

Eclipse is my favourite IDE for Java Dev. So its even better that there are lots of plugins for Documentum out there that can save me a lot of juggling between DA, Eclipse, Explorer windows.Truly IDE. A step away from Nirvana.

1. DQL and API editor plugin : Good but syntax highlighting isnt consistent, intellisense doesnt work correctly most of the time.
Available here.

2.WDK Developer Help Plugin : WDK Help topics integrated with Eclipse Help.Awesome, pretty comprehensive help topics, immensely useful if you are just starting out with WDK development.
Available here.

3.Repository Interrogation Utility: Available both as an eclipse plugin and a stand-alone utility, it pretty much obliviates the need to open up DA(except for more advanced functions) to browse the repository looking for object properties etc. Great DQL and API querying views, so you might not need the first plugin.
Available here.

4.WDK Eclipse Plugin: Great if you are into the business of customising webtop.
Available here.

All in all you can find a lot of goodies besides these if you can spend some time at Component Exchange.

The Death Star Project 1 : Sharepoint Wiki

Finally I have crossed over to the dark side.After years of MS bashing, I am going to start working on a KM portal,a sort of Wiki, on Documentum(what an irony!) using MS Sharepoint Portal Server at work.This should be exciting.I know a couple of open source CMS that are really light weight and do their job well, but the Powers that be said Sharepoint and mine not to ask why, mine to do and die.

Anyways I looked up for any hints on how to go about building a Sharepoint Wiki.Not too much luck. Fell upon these two links though :

http://blogs.tamtam.nl/mart/TamTamWikiSharePointBeta1ForWSSAndSPS.aspx
http://www.microsoft.com/technet/technetmag/issues/2007/01/Wiki/default.aspx

I’ll have to see how this works out, fact of the matter being that I am totally new to Sharepoint and I tend to be slow getting up to speed with MS technologies, DirectX being the exception ofcourse.

I’ll ofcourse share any insights that you guys might find useful in the course of this “crossover”.Watch out for more on this space.And If you have any pointers to share , please go ahead and color my page black and yellow.You are welcome.

                                          

Deploying a Service Business Object in 5.3

This one is closer to my heart since i spent a lot of time trying to figure this one out what with being a novice in Documentum and tight deadlines and the works. I had a faint idea on how to deploy a SBO with 5.2 which if I am correct is like this:

1. Build a jar with your source files

2. Add an entry to your dbor.properties file, something like a descriptor for your Business Object, which looks something like this:

com.myexample.sbo.ITestService = service,com.myexample.sbo.impl.TestService,1.0

(Interface class = service, Implementation Class, version)

3. Place this jar on each client machine, so that it figures in the machine’s classpath

Easy. Not the best way to do it, but still pretty easy.

What changed with 5.3 is that you can add your Business Object as a module in the docapp and upon connecting to the docabase the jar file will be automatically downloaded to the client machine. No need to add it to the classpath and no need for an entry in the dbor.properties file. Elegant solution.Yeah, but the problem is that there is more documentation on how to actually code a SBO than there is on deploying it through the docapp.

I sifted through dozens of forum threads and docs online but never quite got it working. In the end, what I figured out was that everywhere there was some crucial step missing or some information assumed to be already known to the user and hence left out. Two very helpful links I found during this quest: http://www.dmdeveloper.com/articles/dfc/bof_practical.html and http://developer.emc.com/developer/Articles/BOF2Registration.html

Especially the one at EMC is really helpful and the most complete document available on this subject.

So now since I got it working, let me retrace the steps:

1. While installing Content Server, enable the docbase as a Global Repository, even if you are using only ONE docbase.(My perception was that you need a docbase configured as Global Rep. only when you are working with multiple docbases or repositories. But it turned out that you need your Global Repository even if you are working with one docbase.)

2. Build your implementation and interface jars and add them to the docbase as a new module.

3. Add the following lines to your dfc.properties file:

dfc.bof.registry.repository=test_docbase

dfc.bof.registry.username=test_docbase_bof

dfc.bof.registry.password=f3n3A5KP+A0DG3WGA==

Substitute the corresponding values with whatever is applicable to your environment. The key thing here is that you need to set the user dm_bof_registry to active before doing this. Although the EMC article states that you need to set the property dfc.bof.registry.username to dm_bof_registry, from my experiences I found that dmadmin will also work fine here, infact any user will be fine until he has access to BOF Registry. Also you can encrypt the password with the cmd line utility mentioned in the EMC article.

They also have a nifty little utility code to test if your global repository is working fine.

Next Page »