public void compile(OActivity context, BpelObject source, Runnable run) { DefaultActivityGenerator.defaultExtensibilityElements(context, source); _structureStack.push(context,source); try { run.run(); } finally { OActivity popped = _structureStack.pop(); OActivity newtop = _structureStack.topActivity(); OScope topScope = _structureStack.topScope(); if (newtop != null) { newtop.nested.add(popped); // Transfer outgoing and incoming links, excluding the locally defined links. newtop.incomingLinks.addAll(popped.incomingLinks); if (newtop instanceof OFlow) newtop.incomingLinks.removeAll(((OFlow) newtop).localLinks); newtop.outgoingLinks.addAll(popped.outgoingLinks); if (newtop instanceof OFlow) newtop.outgoingLinks.removeAll(((OFlow) newtop).localLinks); // Transfer variables read/writen newtop.variableRd.addAll(popped.variableRd); newtop.variableWr.addAll(popped.variableWr); } if (topScope != null && popped instanceof OScope) topScope.compensatable.add((OScope) popped); } }
public BpelObject topSource() { return _srcMap.get(topActivity()); }
private void compileLinkSource(LinkSource linksrc) { OLink ol = resolveLink(linksrc.getLinkName()); assert ol != null; ol.debugInfo = createDebugInfo(linksrc, linksrc.toString()); if (ol.source != null) throw new CompilationException(__cmsgs.errDuplicateLinkSource(linksrc.getLinkName()).setSource(linksrc)); ol.source = _structureStack.topActivity(); ol.transitionCondition = linksrc.getTransitionCondition() == null ? constantExpr(true) : compileExpr(linksrc .getTransitionCondition()); _structureStack.topActivity().sourceLinks.add(ol); _structureStack.topActivity().outgoingLinks.add(ol); }
public OActivity getCurrent() { return _structureStack.topActivity(); }
private void compileLinkTarget(LinkTarget target) { OLink ol = resolveLink(target.getLinkName()); assert ol != null; ol.debugInfo = createDebugInfo(target, target.toString()); if (ol.target != null) throw new CompilationException(__cmsgs.errDuplicateLinkTarget(target.getLinkName()).setSource(target)); ol.target = _structureStack.topActivity(); _structureStack.topActivity().targetLinks.add(ol); }
private void compileLinks(Activity source) { /* Source Links Fixup */ for (LinkSource ls : source.getLinkSources()) compileLinkSource(ls); /* Target Links Fixup */ for (LinkTarget lt : source.getLinkTargets()) compileLinkTarget(lt); _structureStack.topActivity().joinCondition = (source.getJoinCondition() == null || source.getLinkTargets() .isEmpty()) ? null : compileJoinCondition(source.getJoinCondition()); }