String messageName = act.getMessage().replace(' ', '_');
*/
for(int j=0; j<messageDefinitions.length; j++){
ParameterContext[] vars = messageDefinitions[j].getParameters();
ProcessVariable var = null;
String messageName = messageDefinitions[j].getName();
boolean bCustomizedStarter = false;
if(starterMessage!=null && messageDefinitions[j].equals(starterMessage)){
bCustomizedStarter = true;
}
out.print(" public " + (bCustomizedStarter ? "String on" + messageName + "(" : "void on" + messageName + "(String instanceId" ));
if(vars!=null){
String sep = (bCustomizedStarter ? "":", ");
for(int i=0; i<vars.length; i++){
try{
ProcessVariable pvd = vars[i].getVariable();
Class type = null;
if(pvd!=null){
type = pvd.getType();
}else{
type = (Class)vars[i].getType();
}
//review: messagedefinition need a field, which contains parameter type in Class
out.print( sep + getActualTypeName(type) + " " + vars[i].getArgument());
sep = ", ";
}catch(Exception e){
throw new UEngineException("Can't resolve type information of message '" + messageName + "', property '" + vars[i].getArgument()+"'");
}
}
}else if(var!=null){
out.print(", " + getActualTypeName(var.getType()) + " " + var.getName());
}
out.print(") throws java.rmi.RemoteException");
if(isInterface){
out.println(";");
}else{
out.println("{");
out.println(" try{");
if(bCustomizedStarter ){
out.println(" String instanceId = _startAndSendMessage(new Object[]{\"" + proc.getName() + "\", \"" + messageName +"\"");
}else
out.print (" _sendMessage(new Object[]{instanceId, \"" + messageName +"\"");
if(vars!=null){
for(int i=0; i<vars.length; i++){
try{
ProcessVariable pvd = vars[i].getVariable();
Class type = null;
if(pvd!=null){
type = pvd.getType();
}else{
type = (Class)vars[i].getType();
}
out.print(", " + convert2Object(type, vars[i].getArgument().getText()));