Thursday, October 27, 2011
Saturday, October 22, 2011
Modify Workflow Popup
Recently I got requirement to modify workflow popup menu according to certain conditions
The following explains how simply to do that:
The following explains how simply to do that:
- Go to the following directory <middleware_home>/Oracle_ECM1/ucm/idc/resources/core/idoc
- In that directory, we have two interesting files that contains most of resource includes that we desire to customize std_page.idoc & std_workflow.idoc
- As per our requirement of customizing Workflow related feature so our target will be std_workflow.idoc, inside it you will find an include called setup_workflow_action_popups
- I will assume you will be able to create a new component, and add a resource file to it, then inside that resource file copy and past the include setup_workflow_action_popups from std_workflow.idoc as is.
- Now lets take a look at the include
You will find there repeating parts in the include everyone is representing an item in the popup menu.
<$exec rsAppendNewRow("PopupProps")$>
<$exec setValue("PopupProps", "label", lc(""))$>
<$exec setValue("PopupProps", "function", "")$>
<$exec setValue("PopupProps", "ifClause", "")$>
<$exec setValue("PopupProps", "ifClause", "")$>
<$exec setValue("PopupProps", "class", "workflow")$>
<$exec setValue("PopupProps", "id", "")$>
id: unique i for the popup menu item
class: will be always workflow
function: either a link location or javascript calls. The link may be composited by idoc script
label: localized display label for the popup menu item
ifClause: Which is the amazing feature, it is the condition for displaying the menu item and it can be something like dDocType like 'Correspondence' and of course you can make use of the existing conditions like AllowReview & AllowCheckin
Here is an example of a new item I added
<$exec rsAppendNewRow("PopupProps")$>
<$exec setValue("PopupProps", "label", lc("wwUpdateAndApprove"))$>
<$exec setValue("PopupProps", "function", "<$HttpCgiPath$&>IdcService=GET_UPDATE_FORM&dDocType=Correspondence&dID=<$dID$>&dDocName=<$url(dDocName)$>&idcToken=<$idcToken$>")$>
<$exec setValue("PopupProps", "ifClause", "dDocType like 'Correspondence'")$>
<$exec setValue("PopupProps", "class", "workflow")$>
<$exec setValue("PopupProps", "id", "workflowUpdateAndApprove")$>
The two resource file std_page.idoc & std_workflow.idoc will make you very powerful, don't miss them and don't give up until you find your needs.
Thursday, October 6, 2011
Oracle Public Cloud
Did you see this website before cloud.oracle.com?
The interesting part for me is building your custom business application over Oracle Public Cloud, which will be stable and easy to configure and highly available. Customers in Middle East will take time to accept Public Cloud over building their own Private Cloud which is a correct decision for specific decisions.
May be hosting Website built using web content s or some kind of portals there will be applicable.
The interesting part for me is building your custom business application over Oracle Public Cloud, which will be stable and easy to configure and highly available. Customers in Middle East will take time to accept Public Cloud over building their own Private Cloud which is a correct decision for specific decisions.
May be hosting Website built using web content s or some kind of portals there will be applicable.
Friday, September 16, 2011
Solved password reset for UCM 11g
Today I returned to the password reset issue in UCM 11g, and I solved it by creating a custom component. Just less than 27 line of code solved it !!! till now I wonder why Oracle missed that.
Anyway I want to share it with you in case you faced the same problem and you were looking for a solution.
I will assume you know how to create a custom service, and in case if you don't know refer to The Definitive Guide to Stellent Oracle Content Server for Bex Huff.
1- Create a custom component using Component Wizard
2- Create a java class and make this class extends UserService
3- Add the following method to the class
public void resetPassword() throws Exception {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:7001/dc=my_domain");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Admin");
env.put(Context.SECURITY_CREDENTIALS, "weblogic1");
DirContext ctx = new InitialDirContext(env);
ModificationItem[] mods = new ModificationItem[1];
Attribute mod0 = new BasicAttribute("userpassword", m_binder.getLocal("dPassword"));
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
ctx.modifyAttributes("uid=sysadmin,ou=people,ou=myrealm", mods);
}
3- Modify the existing service EDIT_USER_PROFILE (by the Component Wizard)
-Change service class to the newly created class by you (don't forget package name)
-Then add new action which is of type java method and refers to our newly created method resetPassword
-Order actions so that resetPassword be before storeUserDatabaseProfileData
At the end restart and test. One last thing from inside weblogic administration console, you need to change embedded ldap credential and be sure it is configured correctly.
Anyway I want to share it with you in case you faced the same problem and you were looking for a solution.
I will assume you know how to create a custom service, and in case if you don't know refer to The Definitive Guide to Stellent Oracle Content Server for Bex Huff.
1- Create a custom component using Component Wizard
2- Create a java class and make this class extends UserService
3- Add the following method to the class
public void resetPassword() throws Exception {
Hashtable
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:7001/dc=my_domain");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Admin");
env.put(Context.SECURITY_CREDENTIALS, "weblogic1");
DirContext ctx = new InitialDirContext(env);
ModificationItem[] mods = new ModificationItem[1];
Attribute mod0 = new BasicAttribute("userpassword", m_binder.getLocal("dPassword"));
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
ctx.modifyAttributes("uid=sysadmin,ou=people,ou=myrealm", mods);
}
3- Modify the existing service EDIT_USER_PROFILE (by the Component Wizard)
-Change service class to the newly created class by you (don't forget package name)
-Then add new action which is of type java method and refers to our newly created method resetPassword
-Order actions so that resetPassword be before storeUserDatabaseProfileData
At the end restart and test. One last thing from inside weblogic administration console, you need to change embedded ldap credential and be sure it is configured correctly.
Labels:
11g,
bug,
Component Wizard,
Content Management,
Oracle,
passwords,
reset,
UCM
Wednesday, September 7, 2011
UCM users cannot reset their passwords!!!
I had an issue that I was trying to avoid, until I worked in a project that needs it. I cannot imagine how Oracle guys missed it, USERS CANNOT RESET THEIR PASSWORDS.
I don't care about how the new UCM has been structured, Users must have the ability to change their passwords. Guys most of the time LDAPS are only used as a repository (it is database) and users are not accessing them, that's beside a lot of customers doesn't have LDAP to work with or integration is not part of the scope.
Do you think this is a minor issue or not an issue at all?
At the end I want to thank Raj from Oracle support for his support.
Tuesday, August 23, 2011
Go Go Google :)
I was browsing google application engine features where I am thinking in hosting a website there. You may don't know that a free account can use up to 1 GB of storage and up to 5 million page views a month.
Anyway I found something else interesting which is Go programming language, it is a new one owned by google and is very interesting and promising. I have quoted the following:
"Compiled Go code runs at close to the speed of C"
"Compilation happens almost instantly"
"Existing languages haven't been optimized for multi-core processors or massive scaling." "One of our goals in Go was to make a language that could use those processors well, particularly for the kind of server-side programming that we do here at Google where you have many client requests coming into a machine that's multiplexing them. And Go is a really good language for writing multiplex servers in, where you use these things called 'go' routines, which are kind of like threads but lighter-weight, and some communication primitives to do the multiplexing"
"Go is appropriate for a broad spectrum of uses, including Web programming, mobile programming and systems programming"
Visit http://golang.org/
Anyway I found something else interesting which is Go programming language, it is a new one owned by google and is very interesting and promising. I have quoted the following:
"Compiled Go code runs at close to the speed of C"
"Compilation happens almost instantly"
"Existing languages haven't been optimized for multi-core processors or massive scaling." "One of our goals in Go was to make a language that could use those processors well, particularly for the kind of server-side programming that we do here at Google where you have many client requests coming into a machine that's multiplexing them. And Go is a really good language for writing multiplex servers in, where you use these things called 'go' routines, which are kind of like threads but lighter-weight, and some communication primitives to do the multiplexing"
"Go is appropriate for a broad spectrum of uses, including Web programming, mobile programming and systems programming"
Visit http://golang.org/
Nice Name but the question is: What are google's plans for GO?
Monday, July 11, 2011
Packt Offer for Oracle books
- 20% off all Oracle print books
- 30% off all Oracle eBooks
Here is the campaign like if you are interested http://www.packtpub.com/article/50th-oracle-book-offer
For me I am waiting a new book about Oracle Identity Management
Subscribe to:
Posts (Atom)


