We are new to UCM 11g (and UCM in general),
We need to write to the DB some of the contet's values (from different fields- for example, it's dDocName) upon it's checkIn.
I want to use the DataAccess and DynamicPrefix componenets that show how to use filters for different needs.
My question is what filter to use- DynamicPrefix's "CheckinFilter" (i mean the filter implemented in DynamicPrefix)
or should i use DataAccess's "UpdateDatabaseFilter",
or maybe both.
and if both, how to do that exactly?
plus - code samples will be of much help.
To be more specific-
the demand is that once a file was checked in,
it will start a process (a workflow ,external to UCM(!)).
For that we need to save some details of a content that was checked -In in a table in the DB-meaning update the DB.
(That is the reason we are not sure which filter to use.)
it will start a process (a workflow ,external to UCM(!)).
Provided that your process is a BPEL one, you can follow the standard functionality described here: http://docs.oracle.com/cd/E21764_01/doc.1111/e16759/toc.htm
Otherwise, you will need to mix the functionality similar to DataAccess (I think much of that is actually in SQL queries, not in the Java class - if I remember, it just adds a custom metadata field to the database scheme, but all inserts, updates, selects are defined directly) with an infrastructure similar to DynamicPrefix. Namely, you will need to re-use its Filter events.
Java Filter Events, or "hooks", allow you to enhance the functionality of standard service without overloading them. Take them as open points where you can inject your piece of code. Unfortunately, this piece is almost undocumented in the standard documentation - the best info can be found here: http://docs.oracle.com/cd/E21764_01/doc.1111/e10807/c03_components.htm#CSSDK178 or here http://docs.oracle.com/cd/E21764_01/doc.1111/e10792/c04_components.htm#CSMSP724
Still the best description of JFE is available in this book: http://www.amazon.com/Definitive-Stellent-Content-Server-Development/dp/1590596846/ref=sr_1_1?ie=UTF8&qid=1335171596&sr=8-1
Thank you very much.
I am using this link as guidance- http://selvam2day.blogspot.com/2010/11/configuring-ucm-application-in-eclipse.html
and in here it says that every component has it's own jars.
Do you know where i can find the jars required for this component?
plus- we are trying to find the interfaces defined in intradoc,
and we can't seem to find them at all (it is needed for the import in the above link).
all we find is html files from documentation in our ucm servers.
What are we missing?
Edited by: 924735 on 07:28 23/04/2012
As for server.zip, read this post: Re: UCM-10g and 11g
I don't think you will need anything else, but if you do:
- component specific jars should be within the relevant component
- other standard libraries will be at /Oracle_Home/ucm/idc/jlib , or "somewhere around"
Also, don't forget to assign points :-)
Thank you jiri,
do you also happen to know where to can find the intradoc library containing the interfaces (for examle- FiletrImplementor)?
All we find is the intradoc documentation- containing html files only.
you're looking for the core classes which are in idcserver.jar in the 11g version.
the ootb component classes are in the component directories:
You'll find directories for all of the components in there. there are jar files in most as well.
Thank you ryan,
I have added the idcserver.jar already but there are still errors-
According to this link- http://selvam2day.blogspot.com/2010/11/configuring-ucm-application-in-eclipse.html-
the intradoc libraries are required,
what are the core classes that are supposed to replace them?
There are many components in the library you mentioned ,
and i did not find a class or interface of ,for example, filter implementor.
Thanks again for the help,
Well that problem is solved,
but now when i try to run the program ,in eclipse,
i get the error "csFailedToInitServer The IsoJavaEncodingMap table is missing. "
According to this link and Brian huff- http://tech.groups.yahoo.com/group/intradoc_users/message/5741,
I added the line CLASSPATH=C:/UCM/Oracle_ECM/jlib/idcserver.jar to the intradoc.cfg,
but without any change.
can someone help?
Thanks in advance,
I have to caution you about changing the dDocName, it's one field you don't want to tamper with! Perhaps you could consider using a custom field.
Content Server does allow the dDocName to be prefixed but the one prefix applies to all auto-generated dDocNames.
Also a custom component should be a last resort, Content Server is quite robust and does nearly everything you need either out-of-the-box or with a bit of scripting.
first of all thank you for the advice.
We have no intention of changing the value in dDocName,nor add a prefix to it.
All we want to do is when a file is checked in, we want some of it's details, for example- it's dDocName value,
to be written to a table in a DB (the bigger purpose is for integration- we need to add info about this file from other systems).
I am using the DynamicPrefix and the DataAccess components as guidance to how to write our component.
I looked in the ootb component, but did not find anything that suits to what we need.
Do you know an ootb component that will do that?
You will most likely need a custom component for this and I think hooking into a filter is the correct approach. You only want the code to fire if an item is successfully checked in. Thus, you would want to be further down the chain than the standard validateCheckinData, validateStandard, computeDocName filters.
Depending on whether you want both checkins and metadata updates, the filter you choose might be different. Or, within the filter code, you might simply use the available binder variables to determine whether it is a metadata update (such as IsUpdateMetaOnly) or checkin (such as isCheckin).
You should be able to hook into either onEndServiceRequestActions or serviceCleanUp and use the binder variables to determine if it was a checkin/update and if it was successful. Beware that these filters appear to be run at the end of every service so you code needs to be quick and efficient.
To see all the available filters, you can go to the System Audit Information page and turn on the "services" tracing section with full verbose tracing enabled. Then go run a checkin and look at the console output. You may need to set UseRedirectedOutput=true (see http://corecontentonly.com/2009/12/07/output-to-log/) because there will be a lot of output.
The "The Definitive Guide to Stellent Content Server Development" has a lot of good examples that can guide you.