ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Workflow Engines - IBM MQ Workflow & Business Process Choreographer » create and start instance

Post new topic  Reply to topic
 create and start instance « View previous topic :: View next topic » 
Author Message
karthik
PostPosted: Thu Oct 30, 2003 6:18 am    Post subject: create and start instance Reply with quote

Centurion

Joined: 17 Oct 2003
Posts: 114

After executing the program create and start instance i donot see any template being created in my FAT client.

I am copying the code i have ..
Please help me find out what the bug is..


And i am also not using any reply Q, reply QMGR





import java.io.*;
import java.util.*;
import com.ibm.mq.*;
public class dup2 {

private static final String INAMETAG = "<ProcInstName>";
private static final String STATETAG = "<ProcInstState>";
private static final String TIMETAG = "<LastStateChangeTime>";
private static final String ENDTAG = "</";

/** Creates a new instance of ProcessTemplateCreateAndStartInstance */
public dup2() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
String WorkFlowQMGR = null;
String UPESQueue = null;
String ReplyQMGR = null;
String ReplyQueue = null;
boolean responseRequired = false;
if ( args.length != 4 &&
args.length != 2) {
System.out.println("Paramters are: Queue, QueueManager, ReplyQMGR, ReplyQueue");
System.out.println("Note that ReplyQMGR and ReplyQueue are OPTIONAL " +
"And if one is specified BOTH must be specified");
System.exit(-1);
}
UPESQueue = args[0];
WorkFlowQMGR = args[1];
if (args.length > 2) {
responseRequired = true;
ReplyQMGR = args[2];
ReplyQueue = args[3];
}
System.out.println("WorkFlowQMGR: " + WorkFlowQMGR);
System.out.println("UPESQueue: " + UPESQueue);
if (responseRequired) {
System.out.println("Response is required. Qmgr is " + ReplyQMGR);
System.out.println(" Queue is " + ReplyQueue);
}
MQQueueManager qmgr = new MQQueueManager(WorkFlowQMGR ) ;
System.out.println("Connected to QMGR " + WorkFlowQMGR);

int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING |
MQC.MQOO_SET_IDENTITY_CONTEXT;

MQQueue queue = qmgr.accessQueue(UPESQueue, openOptions,
null, null, "ADMIN");
String DEFAULT_MQUSERID = "ADMIN";
MQMessage inMsg = new MQMessage();
String MessageInXMLFmt;
inMsg.userId = DEFAULT_MQUSERID;
if (responseRequired) {
inMsg.replyToQueueManagerName = ReplyQMGR;
inMsg.replyToQueueName = ReplyQueue;
}
MessageInXMLFmt = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + "<!-- This document is to create and start a process template -->" + "\n";
MessageInXMLFmt = MessageInXMLFmt + "<WfMessage>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <WfMessageHeader>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <ResponseRequired>Yes</ResponseRequired>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <UserContext>I want this data back</UserContext>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " </WfMessageHeader>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <ProcessTemplateCreateAndStartInstance>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <ProcTemplName>PT1</ProcTemplName>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <ProcInstName>PI</ProcInstName>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <KeepName>false</KeepName>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <ProcInstInputData>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <PersonInfo>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <CustomerLastName>Sreenivas</CustomerLastName>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <CustomerNumber>123</CustomerNumber>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " </PersonInfo>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <PartsInfo>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <PartNumber>600</PartNumber>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <PartOrderQty>2</PartOrderQty>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " <PartName>ThinkPad</PartName>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " </PartsInfo>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " </ProcInstInputData>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + " </ProcessTemplateCreateAndStartInstance>" + "\n";
MessageInXMLFmt = MessageInXMLFmt + "</WfMessage>" + "\n";


inMsg.writeString(MessageInXMLFmt);
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_SET_IDENTITY_CONTEXT;
queue.put(inMsg, pmo);
System.out.println("Start message sent");
qmgr.disconnect() ;
if (responseRequired) {
MQQueueManager replyQM = new MQQueueManager(ReplyQMGR);
System.out.println("ReplyQMGR accessed");
int ReplyOpenOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE ;
MQQueue replyQueue = replyQM.accessQueue(ReplyQueue,
ReplyOpenOptions, null, null, null);
System.out.println("ReplyQueue accessed");
MQMessage currentMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions( );
gmo.options = MQC.MQGMO_WAIT;
gmo.matchOptions = MQC.MQMO_MATCH_CORREL_ID;
gmo.waitInterval = -1;
replyQueue.get( currentMessage, gmo );
byte buffer[] = new byte[ currentMessage.getDataLength() ];
currentMessage.readFully( buffer, 0, currentMessage.getDataLength() );
String curMsg = new String(buffer);
if ( curMsg.indexOf("<Exception>") != -1 )
System.out.println("An Error has occurred during Process Start\n" +
curMsg);
else {
int inamePos = curMsg.indexOf(INAMETAG) + INAMETAG.length() ;
int statePos = curMsg.indexOf(STATETAG) + STATETAG.length();
int timePos = curMsg.indexOf(TIMETAG) + TIMETAG.length();

String PIName = new String( curMsg.substring( inamePos ,
curMsg.indexOf(ENDTAG,inamePos) ) );
String PIState = new String( curMsg.substring( statePos,
curMsg.indexOf(ENDTAG,statePos) ) );
String PITime = new String( curMsg.substring( timePos,
curMsg.indexOf(ENDTAG,timePos) ) );
System.out.println("Instance '" + PIName +
"' is in the " + PIState + " state as of " + PITime);
}

replyQM.disconnect();
}

}
catch(MQException ex){
System.out.println("MQ Error - Reason code :" + ex.reasonCode);
}
catch (Exception e){
System.out.println("Error : " + e);
}
} // end main

} // end CLASS


Thanks
Karthik
Back to top
View user's profile Send private message
vennela
PostPosted: Thu Oct 30, 2003 6:42 am    Post subject: Reply with quote

Jedi Knight

Joined: 11 Aug 2002
Posts: 4055
Location: Hyderabad, India

This is a pretty standard code and I haven't looked at the entire code except the XML message that you are trying to PUT to Workflow EXEXMLINPUTQ.
1. Is there a process with the name PT1.
2. Is the InputDatastructure part of the XML formed right? You should double check the parent child nest there.
3. If you have supplied a ReplyToQ, post what the message is in the ReplyToQ. But to do this, you have to include a print statement.

Original code snippet
Code:
currentMessage.readFully( buffer, 0, currentMessage.getDataLength() );
String curMsg = new String(buffer);
if ( curMsg.indexOf("<Exception>") != -1 )


Change it to
Code:
currentMessage.readFully( buffer, 0, currentMessage.getDataLength() );
String curMsg = new String(buffer);
System.out.println(curMsg);
if ( curMsg.indexOf("<Exception>") != -1 )
Back to top
View user's profile Send private message Send e-mail Visit poster's website
karthik
PostPosted: Thu Oct 30, 2003 6:56 am    Post subject: Reply with quote

Centurion

Joined: 17 Oct 2003
Posts: 114

Venny

Thanks for the reply. I changed PT1 to the real process name Order, but it still did not work.

I guess i am in confused state.
What should be the output of this program when i run the program and open the client.

Thanks in advance
karthik
Back to top
View user's profile Send private message
vennela
PostPosted: Thu Oct 30, 2003 7:15 am    Post subject: Reply with quote

Jedi Knight

Joined: 11 Aug 2002
Posts: 4055
Location: Hyderabad, India

A new process Instance should be created and it should be running. If you are using fat client and if you have lists like ProcessTeplate List, ProcessInstance List, WorkLists. If you click on the ProcessInstance List, you should see a proess instance running.

You can also run the admin utility fmcautil and keep it running. Now if you send the XML message to workflow, if there is an error, it will be spit the error in the admin utility window. If you can figure out what it means post it here. If nothing is shown there after the message is PUT, then your process should start fine.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
karthik
PostPosted: Thu Oct 30, 2003 7:56 am    Post subject: Reply with quote

Centurion

Joined: 17 Oct 2003
Posts: 114

sorry for the late reply..

The error was

10/30/2003 9:53:29 AM FMCSYS: FMC00118E Object does not exist

Thanks
Back to top
View user's profile Send private message
vennela
PostPosted: Thu Oct 30, 2003 8:21 am    Post subject: Reply with quote

Jedi Knight

Joined: 11 Aug 2002
Posts: 4055
Location: Hyderabad, India

Have you imported the process "Order" into runtime. Is the process showing up in the ProcessTemplate List? I believe it is case sensitive.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
karthik
PostPosted: Thu Oct 30, 2003 8:42 am    Post subject: Thanks Reply with quote

Centurion

Joined: 17 Oct 2003
Posts: 114

thanks Venny

I got it working . I guess i did not import into runtime .
I was under the impression that i did.

thanks very much
karthik
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Workflow Engines - IBM MQ Workflow & Business Process Choreographer » create and start instance
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.