public void reply2(final PartnerLinkInstance plinkInstnace, final String opName, final String mexId, Element msg,
QName fault, boolean failure, final String mexRef) throws FaultException {
ProcessMessageExchangeEvent evt = new ProcessMessageExchangeEvent();
evt.setMexId(mexId);
evt.setOperation(opName);
evt.setPortType(plinkInstnace.partnerLink.myRolePortType.getQName());
MessageExchangeDAO mex = _dao.getConnection().getMessageExchange(mexRef);
MessageDAO message = mex.createMessage(plinkInstnace.partnerLink.getMyRoleOperation(opName).getOutput()
.getMessage().getQName());
buildOutgoingMessage(message, msg);
MyRoleMessageExchangeImpl m = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mex);
_bpelProcess.initMyRoleMex(m);
m.setResponse(new MessageImpl(message));
if (failure) {
mex.setStatus(MessageExchange.Status.FAILURE.toString());
} else if (fault != null) {
mex.setStatus(MessageExchange.Status.FAULT.toString());
mex.setFault(fault);
evt.setAspect(ProcessMessageExchangeEvent.PROCESS_FAULT);
} else {
mex.setStatus(MessageExchange.Status.RESPONSE.toString());
evt.setAspect(ProcessMessageExchangeEvent.PROCESS_OUTPUT);
}
doAsyncReply(m);
sendEvent(evt);
}