/** * This method is exposed to the JS environment and returns the process * instance ID of the running PI. */ public static long pid(Context cx, Scriptable thisObj, Object[] args, Function funObj) { TopLevelFunctions thiz = (TopLevelFunctions) getTopLevelScope(thisObj); return thiz._ectx.getProcessId(); }
/** * This method is exposed to the JS environment and returns the activity * name of the running PI. */ public static String activityName(Context cx, Scriptable thisObj, Object[] args, Function funObj) { TopLevelFunctions thiz = (TopLevelFunctions) getTopLevelScope(thisObj); return thiz._ectx.getActivityName(); }
public void unregisterExtensionBundle(AbstractExtensionBundle bundle) { _server.unregisterExtensionBundle(bundle.getNamespaceURI()); }
private Integer getTenantId(ExtensionContext context) { DeploymentUnitDir du = new DeploymentUnitDir(new File(context.getDUDir())); QName processIdQname = new QName(context.getProcessModel().getQName().getNamespaceURI(), context.getProcessModel().getQName().getLocalPart() + "-" + du.getStaticVersion()); return BAMPublisherServiceComponent.getBPELServer(). getMultiTenantProcessStore().getTenantId(processIdQname); }
/** * Called when the response for the above service received * * @param mexId MessageExchange id */ public void onRequestReceived(String mexId) throws FaultException { _log.info("Response received"); //((ExtensionContextImpl)extensionContext).setBpelRuntimeContext(context); Element notificationMessageEle = extensionContext.getInternalInstance().getMyRequest(mexId); Node part = extensionContext.getPartData(notificationMessageEle, longRunningActivity.getOutputVariable()); _log.info("RESPONSE: " + DOMUtils.domToString(notificationMessageEle)); _log.info("PART: " + DOMUtils.domToString(part)); extensionContext.writeVariable(longRunningActivity.getOutputVariable(), part); extensionContext.complete(cid); }
private void fillDataArray(Object[] dataArray, List<BAMKey> payloadBAMKeyList, int startIndex, ExtensionContext context, Element element) throws FaultException { for (int i = 0; i < payloadBAMKeyList.size(); i++) { BAMKey bamKey = payloadBAMKeyList.get(i); if (bamKey.getExpression() != null) { dataArray[i + startIndex] = evaluateXPathExpression(context, bamKey.getExpression(), element); } else if (bamKey.getVariable() != null && bamKey.getPart() == null) { if (bamKey.getQuery() == null) { /* simple types should be specified for here */ dataArray[i + startIndex] = context.readVariable(bamKey.getVariable()).getTextContent(); } else { String errMsg = "This functionality is currently not supported"; log.error(errMsg); handleException(errMsg); } } else if (bamKey.getVariable() != null && bamKey.getPart() != null) { NodeList childNodes = context.readVariable(bamKey.getVariable()).getChildNodes(); String result = null; String part = bamKey.getPart(); for(int j=0; j < childNodes.getLength(); j++) { Node item = childNodes.item(j); if(item != null && item.getNodeType() == Node.ELEMENT_NODE && item.getLocalName().equals(part)) { /* remove the payload part */ result = DOMUtils.domToString(DOMUtils.getFirstChildElement(item)); } } dataArray[i + startIndex] = result; } } }
if (!_ectx.isVariableVisible(name)) { return ScriptableObject.NOT_FOUND; __logger.debug("Reading BPEL variable '" + name + "'."); Node n = _ectx.readVariable(name); XMLObject xmlObj = (XMLObject)_sctx.newObject(start, "XML", new Object[] {Context.javaToJS(TopLevelFunctions.domToString(n), start)}); _env.put(name, xmlObj);
LongRunningActivity(Element content) { this.content = content; du = new DeploymentUnitDir(new File(extensionContext.getDUDir())); }
private Object[] createMetadata(BAMStreamConfiguration stream, ExtensionContext context, Element element) throws FaultException { List<BAMKey> metaBAMKeyList = stream.getMetaBAMKeyList(); int objectListSize = metaBAMKeyList.size() + 2; Object[] dataArray = new Object[objectListSize]; dataArray[0] = getTenantId(context); dataArray[1] = context.getProcessModel().getQName().toString(); int startIndex = 2; fillDataArray(dataArray, metaBAMKeyList, startIndex, context, element); return dataArray; }
private Object[] createCorrelationData(BAMStreamConfiguration stream, ExtensionContext context, Element element) throws FaultException { List<BAMKey> correlationBAMKeyList = stream.getCorrelationBAMKeyList(); int objectListSize = correlationBAMKeyList.size() + 1; Object[] dataArray = new Object[objectListSize]; dataArray[0] = context.getInternalInstance().getPid().toString(); int startIndex = 1; fillDataArray(dataArray, correlationBAMKeyList, startIndex, context, element); return dataArray; }
public void writeVariables() throws FaultException, ExternalVariableModuleException { for (String varName : _variables) { if (__logger.isDebugEnabled()) { __logger.debug("Writing BPEL variable '" + varName + "' to '" + _env.get(varName) + "'."); } //TODO: only changed variables should be written. Its currently not that easy // to detect whether the content has changed without recursively injecting // emcaPut implementations. _ectx.writeVariable(varName, XMLLibImpl.toDomNode(_env.get(varName))); } } }
public void put(String name, Scriptable start, Object value) { if (__logger.isDebugEnabled()) { __logger.debug("Setting JS variable '" + name + "' to '" + value + "'."); } _env.put(name, value); if (_ectx.isVariableVisible(name) && !_variables.contains(name)) { _variables.add(name); } }
public void unregisterExtensionFilter(AbstractExtensionCorreationFilter filter) { _server.unregisterExtensionBundle(filter.getNamespaceURI()); }
/** * Allows printing debug output to the console. Output will be redirected * to the logger associated with <code>org.apache.ode.extension.e4x.JavaScriptConsole</code>. * The target log level is INFO. */ public static void print(Context cx, Scriptable thisObj, Object[] args, Function funObj) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < args.length; i++) { if (i > 0) { sb.append(' '); } sb.append(Context.toString(args[i])); } TopLevelFunctions thiz = (TopLevelFunctions) getTopLevelScope(thisObj); thiz._ectx.printToConsole(sb.toString()); }
private String genCorrelatorId() throws FaultException { PartnerLinkInstance plink; String operation = longRunningActivity.getResponseOperation(); plink = extensionContext.getPartnerLinkInstance(longRunningActivity.getPartnerLink()); return plink.partnerLink.getName() + "." + operation; }
private Integer getTenantId(ExtensionContext context) { DeploymentUnitDir du = new DeploymentUnitDir(new File(context.getDUDir())); QName processIdQname = new QName(context.getProcessModel().getQName().getNamespaceURI(), context.getProcessModel().getQName().getLocalPart() + "-" + du.getStaticVersion()); return AnalyticsPublisherServiceComponent.getBPELServer(). getMultiTenantProcessStore().getTenantId(processIdQname); }
String variable = context.readVariable(analyticsKey.getVariable()).getTextContent(); NodeList childNodes = context.readVariable(analyticsKey.getVariable()).getChildNodes(); String result = null; String part = analyticsKey.getPart();
BAMPublisherServiceComponent.getBPELServer().getMultiTenantProcessStore().getTenantsProcessStore(tenantId); String processName = context.getProcessModel().getName().toString();
public boolean has(String name, Scriptable start) { if (super.has(name, start) || _env.containsKey(name)) { return true; } return (_ectx.isVariableVisible(name)); }
private AsyncDataPublisher createAsyncDataPublisher(ExtensionContext context, int tenantId, String bamServerProfileName, BAMStreamConfiguration stream) throws FaultException { AsyncDataPublisher dataPublisher = null; EventPublisherConfig config = null; TenantProcessStore tenantsProcessStore = BAMPublisherServiceComponent.getBPELServer().getMultiTenantProcessStore().getTenantsProcessStore(tenantId); String processName = context.getProcessModel().getName().toString(); config = (EventPublisherConfig)tenantsProcessStore.getDataPublisher(processName); if(config == null) { BAMServerProfile bamServerProfile = getBAMServerProfile(tenantId, bamServerProfileName); dataPublisher = new AsyncDataPublisher(bamServerProfile.getUrl(), bamServerProfile.getUserName(), bamServerProfile.getPassword()); log.info("BPEL BAM data publisher created"); addEventStream(dataPublisher, stream); config = new EventPublisherConfig(dataPublisher); config.addEventStream(stream.getName(), stream.getVersion()); tenantsProcessStore.addDataPublisher(processName, config); } else { dataPublisher = config.getDataPublisher(); if(!config.eventStreamAlreadyDefined(stream.getName(), stream.getVersion())) { addEventStream(config.getDataPublisher(), stream); config.addEventStream(stream.getName(), stream.getVersion()); } } return dataPublisher; }