Sunday, October 30, 2011

Update field automaticaly once another field get updated

Now, I just want to share out a bit of how to update the field automatically in Maximo. A lot of time, we have requirement on how to update the field once another field get updated. Yes, this is really to ease user for not updating another field manually while the information exists in another table. Well, this kind of behaviour is quite common in the UI of maximo. Let's say in the Purchase Order application. Once you update the field of quantity, you should get the total cost of the purchase. that is, one of the default behavior of the Maximo UI.


In order to perform the above behavior, you can do it in 2 ways.
  1. Coding in the level of Mbo
  2. Coding in the level of Bean
Both must be done by coding. :P Well, it's indeed this blog is meant to be.
Anyway, doing coding in level Mbo, you can do it in Fld classes. Thus, you need to perform some changes on metada of Maximo's database. But, one thing that you need to ensure is that you update the same Mbo as what the bean is actually display. Because, a lot of time, the mbo object is not the same as what the mbo object used in Bean. Thus, updating the data will take no effect on the mbo which current bean displays.

doing coding in the level of Bean, will definitely give you the right Mbo. Thus, there is no need to worry about different Mbo object problem as I describe above.

Saturday, October 22, 2011

Maximo does not publish the changes created by MIF

During my project in AORA, I have been configuring a lot about integration/MIF as it deals a lot with external application so called Satellite Application. The idea is the satellite application does not deal directly to Maximo database, but they are accessing Maximo database through iface table. Well, that is general idea of why Integration exists.

In the business process of our client, there is a process to transfer their assets from one storeroom to another storeroom. Well, the satellite application will expect to have a record of Transfer Order to perform Transfer Out-In process. The record is created in the iface table (this is the term representing a table used to exchange data between external application and maximo). Transfer out will be performed first, from Maximo. Once, the process of transfer out is finished. Transfer in will be processed. Transfer in will not be executed if the transfer out has not been done. The transfer asset process involves a hundred of assets to be transferred even thousand, thus, we cannot use a standard Maximo to do this.

To fulfill the above scenario, I make some customization to process the assets. I am using excel reader to read excel and then process it to MIF. Using MIF, I am able to create record. Well, upon creating the record I am expecting to get a record for transfer in. But in fact, it does not get created which is weird. I have created a publish channel to monitor the objects but still the transfer in object does not get created. Well, my hypothesis is that it has different behavior between integration and created directly from UI, which I think, it is not supposed to be so. Thus, the solution to deal with with the problem is to perform some changes on the object either using mbo changes or using escalation to monitor the existence of object and do some changes (adding description to object or any kind of changes to trigger MIF to publish the changes) on that.

Saturday, April 23, 2011

Maximo Authentication

When user login to maximo, Maximo has its own way on doing authentication process. Well, i think its bad. Why do i say so? maximo does have flag for toggling purpose between lookup to db or LDAP and akin. but, it seems that its no use.

Here is the way maximo doing some authentication.

Maximo doing lookup against the db first, if there is no result of looking up the db, then the process will lookup to the ldap. But, before doing lookup, it will see the flag of "useAppServerSecurity". If it is true, then its going to find the ldap for the entered user.

There is a few thing on my mind regarding this process.

1. the process is not efficient. Why? because maximo will lookup the db before lookup to the others. If it has a flag, then why dont use the flag for toggling purpose.
2. if user wants to migrate, then user should migrate all the user in maxuser to the repository of choice.

Friday, January 7, 2011

deploy weblogic using maven2

I tried to deploy my app into weblogic app server using maven2. Yes, there are a few ways. You can use cargo and weblogic maven plugin. I just tried to use the simple 1 which is the cargo plugin. It seems that this plugin has a problem on the repo. I got so many problem of redirection problem (as the maven2 has a problem on doing redirection once the repository is moved to another server). This gave me a problem of the metadata in my local repository. It seems to many things to do and I just gave up on dealing with this plugin.

Having such problem on the cargo plugin. I try to use weblogic plugin as in the following:
http://mojo.codehaus.org/weblogic-maven-plugin

The following are the steps that I go through to get my app deployed onto my weblogic.
1. Insert the following piece of xml code onto the settings.xml. Insert the following configuration:

weblogic
https://nexus.codehaus.org/content/repositories/releases



weblogic
https://nexus.codehaus.org/content/repositories/releases


2. Insert the following piece of xml code into


org.apache.maven.plugins
maven-war-plugin
2.0.2


org.codehaus.mojo
weblogic-maven-plugin
2.9.1


deploy

deploy
start




mpl-web
${wls.adminServerHostName}
${wls.adminServerPort}
t3
${wls.userId}
${wls.password}
true
true
false
false
${wls.targetname}
true



weblogic
wlfullclient
${weblogic.version}


weblogic
com.bea.core.descriptor.wl
1.1.0.0




3. As you might see on the above configuration that the plugin needs 2 weblogic's plugins. Those are wlfullclient and com.bea.core.descriptor.wl. I just need to install the manually. You can find artifact com.bea.core.descriptor.wl in the directory of /modules. While the other artifact is a merged of all the jar files which located in the /wlserver_10.3/server/lib. So that, you can get the files simply do the following steps:
a. go to the mentioned directory.
b. execute the following command to merge all jars:

java -jar ../../../modules/com.bea.core.jarbuilder_X.X.X.X.jar
java -jar wlfullclient.jar

4. Create the war package of your app by executing the following command: mvn package
I use maven-war-plugin version 2.0.2 to package my application as the default version seems to have a problem.

5. Deploy the app to a running weblogic (Ensure that the weblogic server is running). Take a note that I am using a remote deployment instead of local one even the app server is on my local.
Execute the following command the get it deployed.
mvn weblogic:deploy