public Operation getMyRoleOperation(String operationName) { return _plinkDef.getMyRoleOperation(operationName); }
/** * Registers Open IMA. * It doesn't open IMA for non two way operations. * * @param partnerLink * @param opName * @param mexId * @param mexRef * @return */ String processOutstandingRequest(PartnerLinkInstance partnerLink, String opName, String mexId, String mexRef) { if (__log.isTraceEnabled()) { __log.trace(ObjectPrinter.stringifyMethodEnter("process", new Object[] { "partnerLinkInstance", partnerLink, "operationName", opName, "messageExchangeId", mexId, "mexRef", mexRef })); } final OutstandingRequestIdTuple orid = new OutstandingRequestIdTuple(partnerLink, opName, mexId); if (_byOrid.containsKey(orid)) { //conflictingRequest found return mexRef; } // We convert into outstanding request only for in-out operations (pending release operation) if (partnerLink.partnerLink.getMyRoleOperation(opName).getStyle().equals(OperationType.REQUEST_RESPONSE)) { _byOrid.put(orid, mexRef); } return null; }
void initMyRoleMex(MyRoleMessageExchangeImpl mex) { markused(); PartnerLinkMyRoleImpl target = null; PortType portType = null; Operation operation = null; for (Map.Entry<PartnerLinkMyRoleImpl,Endpoint> e : getEndpointToMyRoleMap().entrySet()) { if (e.getValue().serviceName.equals(mex.getServiceName())) { // First one is fine as we're only interested in the portType and operation here and // even if a process has 2 myrole partner links target = e.getKey(); if (target != null) { portType = target._plinkDef.myRolePortType; operation = target._plinkDef.getMyRoleOperation(mex.getOperationName()); if (operation != null) { mex.setPortOp(portType, operation); break; } } } } if (target != null) { if (operation == null) { throw new BpelEngineException("Operation[" + mex.getOperationName() + "] could not be found on the portType [" + portType.getQName() + "]"); } } else { __log.warn("Couldn't find endpoint from service " + mex.getServiceName() + " when initializing a myRole mex."); } }
@Override public void reply(PartnerLinkInstance plinkInstnace, String opName, String mexId, Element msg, QName fault) throws FaultException { String mexRef = _imaManager.release(plinkInstnace, opName, mexId); if (mexRef == null) { throw new FaultException(_bpelProcess.getOProcess().constants.qnMissingRequest); } MessageExchangeDAO mex = _dao.getConnection().getMessageExchange(mexRef); String pipedId = mex.getPipedMessageExchangeId(); if (pipedId != null) { __log.debug("instance replied for live communication:" + mexRef + " " + DOMUtils.domToString(msg)); super.reply2(plinkInstnace, opName, mexId, msg, fault, false, mexRef); } else { MessageDAO message = mex.createMessage(plinkInstnace.partnerLink.getMyRoleOperation(opName).getOutput().getMessage().getQName()); buildOutgoingMessage(message, msg); __log.debug("instance replied mexRef:" + mexRef + " " + DOMUtils.domToString(msg)); mex.setResponse(message); mex.setStatus(Status.RESPONSE.toString()); } }
Operation op = plink.getMyRoleOperation(mexdao.getOperation()); mex.setPortOp(ptype, op);
public void reply2(final PartnerLinkInstance plinkInstnace, final String opName, final String mexId, Element msg, QName fault, boolean failure, final String mexRef) throws FaultException { // prepare event 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); // send event sendEvent(evt); }