import com.bea.wli.management.runtime.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import java.util.Date; import java.text.SimpleDateFormat; import weblogic.management.MBeanHome; import java.util.*; import com.bea.wli.bpm.runtime.ProcessStatus; public class TerminateProcess { public static void main(String[] args){ //Parameters to be configured //String JPDURI = "/IDXWEB/processes/Process.jpd"; //String Provider_URL = "t3://localhost:7001"; //String Security_Principal = "weblogic"; //String Security_Credentials = "weblogic"; if (args.length != 5) { System.out.println("Usage: ADMIN_URI JDP_URI ADMIN_USERNAME ADMIN_PASSWORD BATCH_COUNT"); return; } String adminURL = args[0]; System.out.println("Admin URL is$$$ "+adminURL); String jpdURI = args[1]; System.out.println("jpdURI is$$$ "+jpdURI); String adminUserName = args[2]; String adminPassword = args[3]; int exitCount = Integer.parseInt(args[4]); boolean blnExitOnCount = false;//Flag to run the terminate process in batch. If true, it will //only the number of instances in the exitCount parameter. //If false, it will terminate all the instances of that JPD. try { String CONTEXT_FACTORY = "weblogic.jndi.WLInitialContextFactory"; Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY ); p.put(Context.PROVIDER_URL, adminURL ); p.put(Context.SECURITY_PRINCIPAL,adminUserName); p.put(Context.SECURITY_CREDENTIALS,adminPassword); Context ctx = new InitialContext(p); MBeanHome home = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME); Set s = home.getMBeansByType("ProcessRuntime"); Iterator it = s.iterator(); while (it.hasNext()) { ProcessRuntimeMBean bean = (ProcessRuntimeMBean)it.next(); //Query for JPD ProcessInstanceQuery query = new ProcessInstanceQuery(); query.setStatus(ProcessStatus.ABORTED); query.setServiceURI(jpdURI); ProcessInstanceQueryResult info = bean.getProcessInstances(query); String[] instances = info.getInstanceIds(); System.out.println("Instance Ids " + instances.toString()); System.out.println("Instance Count " + instances.length); for(int i=0;i= exitCount-1)) { System.exit(0); } } } } catch (Exception ex) { System.out.println(ex); ex.printStackTrace(); } } }
Well, it started as a place for middleware notes, tips and tricks, but really, this is a place for me to list out some of the general notes, etc I have for myself. If anyone else finds them useful... Great! If not, at least I have a clipboard of solutions for me...
Monday, March 30, 2009
Obtain a list of JPDs?
I'm expanding my search for help with a WLST script that will terminate all the aborted processes in WLI 9.2.2 I have an open case with Oracle, but we haven't come up with my "ideal" solution.
What I have right now is a Java program that I can pass a JPD to, and it will terminate all the aborted processes for that JPD.
This works ok, but I would like to find a way for the program to find all the JPDs in the environment and then parse through them.
Ideally, all of this would be done in WLST, but I can live with Java if it gets the job done.
Anyone out there have thoughts on how to do this? Unfortunately, I am a middleware guy and not a Java programmer, so I can't do much with this on my own. The code I have right now is included below:
Subscribe to:
Post Comments (Atom)
2 comments:
It seems this isn't possible without writing a query to the WLI database to select all the distinct JPDs in the database. I'll post more as I know it.
If you intend to terminate all aborted processes you do not need to know the list of JPDs. Simply remove it from your query:
// query.setServiceURI(jpdURI);
And all aborted will be returned.
Post a Comment