// this in an invocation of a partner's web service...
Invoke invoke = BPELFactory.eINSTANCE.createInvoke();
invoke.setPortType(execNodeData.portType);
invoke.setOperation(execNodeData.operation);
invoke.setPartnerLink(targetNodeData.partnerLink);
invocationData.invokeScope = new BpelScopeImpl();
setInvokeParameters(execNodeData.operation,invoke,invocation.getArguments(),invocationData.invokeScope);
invocationData.invokeScope.addActivity(invoke);
invocationData.activity = invocationData.invokeScope.getActivity();
invocationData.invoke = invoke;
} else if (execNodeData.bottomUpProcess != null && execNodeData.operation != null){
// this is an invocation of a web service provided by a process...
Receive recv = BPELFactory.eINSTANCE.createReceive();
recv.setPortType(execNodeData.portType);
recv.setOperation(execNodeData.operation);
invocationData.receiveScope = new BpelScopeImpl();
invocationData.receiveScope.addActivity(recv);
setRecvParameters(execNodeData.operation, recv,invocation.getArguments(),invocationData.receiveScope);
invocationData.activity = invocationData.receiveScope.getActivity();
invocationData.receive = recv;
} else {
if (invocation.getExecutable() != null &&
invocation.getExecutable().getDeclaration() != null &&
invocation.getExecutable().getDeclaration() instanceof CtMethod ){
CtMethod m = (CtMethod)invocation.getExecutable().getDeclaration();
ReplyActivity replyAnn = m.getAnnotation(ReplyActivity.class);
if (replyAnn != null && invocation.getArguments().size() == 1){
scan(invocation.getArguments().get(0));
ASTNodeData arg = nodeDataStack.peek();
if (arg.xsdType != null && arg.xpathExpr != null && arg.variable != null){
for (Receive recv : methodReceiveMap.values()){
if (recv.getName().equals(replyAnn.receiveName())){
Reply reply = BPELFactory.eINSTANCE.createReply();
String replyName = m.getSimpleName();
if (!replyAnn.name().equals(""))
replyName = replyAnn.name();
reply.setName(replyName);
if (exceptionTypes.contains(invocation.getArguments().get(0).getType().getDeclaration()))
reply.setFaultName(arg.xsdTypeQName);
BpelScope tmpScope = new BpelScopeImpl();
setReplyParameters(recv, reply, arg.variable, arg.xsdType, arg.xpathExpr, tmpScope);
invocationData.activity = tmpScope.getActivity();
invocationData.replyActivity = reply;
invocationData.reply = reply;
if (m.getAnnotation(FlowActivity.class) != null){
createMethodFlowMapping(m, invocationData.activity);
invocationData.flowActivity = invocationData.activity;