[overlord-commits] Overlord SVN: r602 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src: java/org/jboss/tools/overlord/cdl/bpel/model/util and 1 other directories.
overlord-commits at lists.jboss.org
overlord-commits at lists.jboss.org
Mon Apr 27 18:32:30 EDT 2009
Author: objectiser
Date: 2009-04-27 18:32:30 -0400 (Mon, 27 Apr 2009)
New Revision: 602
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel
Log:
Cater for synchronous response, and pick with mutually exclusive receives.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java 2009-04-27 22:32:30 UTC (rev 602)
@@ -156,24 +156,31 @@
}
}
} else if (InteractionPatterns.isResponseInFaultHandler(interaction) == false) {
- act = new Receive(bpelModel);
-
- if (InteractionUtil.isRequest(interaction)) {
+
+ if (InteractionPatterns.isSyncNormalResponse(interaction)) {
+
+ //System.out.println("ADD RESP VAR TO PRECEDING");
+
+ } else if (InteractionPatterns.isInteractionPickPathTrigger(interaction) == false) {
+ act = new Receive(bpelModel);
- pl.setMyRole(role.getName()+"Service");
- //pl.setPartnerRole(interaction.getToRole().getName());
- pl.setName(interaction.getFromRole().getName()+"To"+role.getName());
- pl.setPartnerLinkType(interaction.getFromRole().getName()+"To"+role.getName()+"Service"+"LT");
-
- portType = role.getName()+"PT";
- } else {
- pl.setMyRole(role.getName()+"Requester");
- pl.setPartnerRole(interaction.getFromRole().getName()+"Service");
- pl.setName(role.getName()+"To"+interaction.getFromRole().getName());
- pl.setPartnerLinkType(role.getName()+"To"+interaction.getFromRole().getName()+"Requester"+"LT");
-
- portType = role.getName()+
- interaction.getFromRole().getName()+"CallbackPT";
+ if (InteractionUtil.isRequest(interaction)) {
+
+ pl.setMyRole(role.getName()+"Service");
+ //pl.setPartnerRole(interaction.getToRole().getName());
+ pl.setName(interaction.getFromRole().getName()+"To"+role.getName());
+ pl.setPartnerLinkType(interaction.getFromRole().getName()+"To"+role.getName()+"Service"+"LT");
+
+ portType = role.getName()+"PT";
+ } else {
+ pl.setMyRole(role.getName()+"Requester");
+ pl.setPartnerRole(interaction.getFromRole().getName()+"Service");
+ pl.setName(role.getName()+"To"+interaction.getFromRole().getName());
+ pl.setPartnerLinkType(role.getName()+"To"+interaction.getFromRole().getName()+"Requester"+"LT");
+
+ portType = role.getName()+
+ interaction.getFromRole().getName()+"CallbackPT";
+ }
}
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java 2009-04-27 22:32:30 UTC (rev 602)
@@ -163,13 +163,13 @@
context.setParent(seq);
- for (int j=1; j < acts.size(); j++) {
+ for (int j=0; j < acts.size(); j++) {
context.insert(model, acts.get(j), null);
}
context.setParent(parent);
- Interaction recv=(Interaction)acts.get(0);
+ Interaction recv=InteractionPatterns.getPickPathInteraction(path); //(Interaction)acts.get(0);
OnMessage onm=new OnMessage(bpelModel);
onm.setActivity(seq);
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java 2009-04-27 22:32:30 UTC (rev 602)
@@ -128,13 +128,11 @@
for (int i=0; i < paths.size(); i++) {
if (paths.get(i).getContents().size() > 0) {
- org.scribble.model.Activity sub=
- paths.get(i).getContents().get(0);
+ Interaction in=getPickPathInteraction(paths.get(i));
- if (sub instanceof Interaction &&
- InteractionUtil.isRequest((Interaction)sub) == false &&
- ((Interaction)sub).getReplyToLabel() != null &&
- ((Interaction)sub).getReplyToLabel().equals(requestLabel)) {
+ if (in != null &&
+ InteractionUtil.isResponse(in) &&
+ in.getReplyToLabel().equals(requestLabel)) {
matched++;
}
}
@@ -150,6 +148,84 @@
return(ret);
}
+ /**
+ * This method obtains the interaction that triggers a
+ * specified path in a BPEL pick activity.
+ *
+ * @param path The path
+ * @return The interaction that triggers the path in
+ * the pick activity
+ */
+ public static Interaction getPickPathInteraction(Block path) {
+ Interaction ret=null;
+
+ // TODO: This method is the opposite of the
+ // 'isInteractionPickPathTrigger', so needs to be
+ // updated to reflect any changes to that method
+
+ if (path.getContents().size() > 0) {
+ org.scribble.model.Activity sub=
+ path.getContents().get(0);
+
+ // Check if scope
+ if (sub instanceof Compose) {
+ Definition defn=((Compose)sub).getDefinition();
+ org.scribble.model.Behaviour b=null;
+
+ for (int j=0; b == null &&
+ j < defn.getBlock().getContents().size(); j++) {
+ if (defn.getBlock().getContents().get(j) instanceof org.scribble.model.Behaviour) {
+ b = (org.scribble.model.Behaviour)
+ defn.getBlock().getContents().get(j);
+ }
+ }
+
+ if (b != null) {
+ sub = b;
+ }
+ }
+
+ if (sub instanceof Interaction) {
+ ret = (Interaction)sub;
+ }
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the supplied interaction
+ * is the trigger interaction within a BPEL pick activity.
+ *
+ * @param in The interaction
+ * @return Whether the interaction is a pick trigger activity
+ */
+ public static boolean isInteractionPickPathTrigger(Interaction in) {
+ boolean ret=false;
+
+ // TODO: Need to determine all situations and ensure
+ // is generic enough to cope with extensions to Scribble
+ // model
+
+ Block path=(Block)in.getParent();
+
+ if (path.getParent() instanceof If &&
+ InteractionPatterns.isSwitch((If)path.getParent())) {
+ ret = true;
+
+ // Check if receive is directly contained within a
+ // sub-definition
+ } else if (InteractionUtil.isSend(in) == false &&
+ path.getParent() instanceof org.scribble.model.Definition &&
+ path.getParent().getParent() instanceof Block &&
+ path.getParent().getParent().getParent() instanceof
+ org.scribble.model.Definition) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
public static boolean isSwitch(If choice) {
boolean ret=false;
@@ -159,11 +235,10 @@
for (int i=0; i < paths.size(); i++) {
if (paths.get(i).getContents().size() > 0) {
- org.scribble.model.Activity sub=
- paths.get(i).getContents().get(0);
+ Interaction in=getPickPathInteraction(paths.get(i));
- if (sub instanceof Interaction &&
- InteractionUtil.isSend((Interaction)sub) == false) {
+ if (in != null &&
+ InteractionUtil.isSend(in) == false) {
matched++;
}
}
@@ -236,4 +311,37 @@
return((String)interaction.
getMessageSignature().getAnnotations().get(FAULT_NAME));
}
+
+ public static boolean isSyncNormalResponse(Interaction interaction) {
+ boolean ret=false;
+
+ if (InteractionUtil.isResponse(interaction) &&
+ interaction.getParent() instanceof Block) {
+ Block block=(Block)interaction.getParent();
+
+ int pos=block.getContents().indexOf(interaction);
+
+ if (pos > 0 && block.getContents().get(pos-1) instanceof Interaction) {
+ Interaction req=(Interaction)block.getContents().get(pos-1);
+
+ ret = isResponseForRequest(interaction, req);
+ }
+ }
+
+ return(ret);
+ }
+
+ public static boolean isResponseForRequest(Interaction resp,
+ Interaction req) {
+ boolean ret=false;
+
+ if (InteractionUtil.isRequest(req) &&
+ InteractionUtil.isResponse(resp) &&
+ resp.getReplyToLabel().equals(
+ req.getRequestLabel())) {
+ ret = true;
+ }
+
+ return(ret);
+ }
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java 2009-04-27 22:32:30 UTC (rev 602)
@@ -70,4 +70,20 @@
return(ret);
}
+ /**
+ * This method determines whether the supplied interaction
+ * is a response.
+ *
+ * @param interaction The interaction
+ * @return Whether the interaction is a response
+ */
+ public static boolean isResponse(Interaction interaction) {
+ boolean ret=false;
+
+ if (interaction.getReplyToLabel() != null) {
+ ret = true;
+ }
+
+ return(ret);
+ }
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel 2009-04-27 22:32:30 UTC (rev 602)
@@ -1,9 +1,9 @@
<process name="ESBBrokerProcess_Broker" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
<partnerLinks>
<partnerLink myRole="BrokerService" name="BuyerToBroker" partnerLinkType="BuyerToBrokerServiceLT"/>
- <partnerLink myRole="BrokerRequester" name="BrokerToSupplierQuoteEngine" partnerLinkType="BrokerToSupplierQuoteEngineLT" partnerRole="SupplierQuoteEngineRequester"/>
+ <partnerLink name="BrokerToSupplierQuoteEngine" partnerLinkType="BrokerToSupplierQuoteEngineLT" partnerRole="SupplierQuoteEngineRequester"/>
<partnerLink name="BrokerToCreditAgency" partnerLinkType="BrokerToCreditAgencyLT" partnerRole="CreditAgencyRequester"/>
- <partnerLink myRole="BrokerRequester" name="BrokerToSupplierTxnProcessor" partnerLinkType="BrokerToSupplierTxnProcessorLT" partnerRole="SupplierTxnProcessorRequester"/>
+ <partnerLink name="BrokerToSupplierTxnProcessor" partnerLinkType="BrokerToSupplierTxnProcessorLT" partnerRole="SupplierTxnProcessorRequester"/>
</partnerLinks>
<sequence>
<receive operation="makeEnquiry" partnerLink="BuyerToBroker" portType="BrokerPT"/>
@@ -12,40 +12,37 @@
<scope>
<sequence>
<invoke operation="getQuote" partnerLink="BrokerToSupplierQuoteEngine" portType="SupplierQuoteEnginePT"/>
- <receive operation="getQuote" partnerLink="BrokerToSupplierQuoteEngine" portType="BrokerSupplierQuoteEngineCallbackPT"/>
</sequence>
</scope>
</sequence>
</while>
<reply operation="makeEnquiry" partnerLink="BuyerToBroker" portType="BrokerPT"/>
- <if>
- <sequence>
- <scope>
- <sequence>
- <receive operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
- <scope>
- <faultHandlers>
- <catch faultName="invalidCredit">
- <sequence>
- <reply faultName="rejected" operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
- </sequence>
- </catch>
- </faultHandlers>
- <sequence>
- <invoke operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
- <invoke operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="SupplierTxnProcessorPT"/>
- <receive operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="BrokerSupplierTxnProcessorCallbackPT"/>
- <reply operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
- </sequence>
- </scope>
- </sequence>
- </scope>
- </sequence>
- <else>
+ <pick>
+ <onMessage operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT">
<sequence>
- <receive operation="cancel" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+ <scope>
+ <sequence>
+ <scope>
+ <faultHandlers>
+ <catch faultName="invalidCredit">
+ <sequence>
+ <reply faultName="rejected" operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+ </sequence>
+ </catch>
+ </faultHandlers>
+ <sequence>
+ <invoke operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+ <invoke operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="SupplierTxnProcessorPT"/>
+ <reply operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+ </sequence>
+ </scope>
+ </sequence>
+ </scope>
</sequence>
- </else>
- </if>
+ </onMessage>
+ <onMessage operation="cancel" partnerLink="BuyerToBroker" portType="BrokerPT">
+ <sequence/>
+ </onMessage>
+ </pick>
</sequence>
</process>
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel 2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel 2009-04-27 22:32:30 UTC (rev 602)
@@ -3,24 +3,25 @@
<partnerLink myRole="CreditAgencyService" name="BrokerToCreditAgency" partnerLinkType="BrokerToCreditAgencyServiceLT"/>
</partnerLinks>
<sequence>
- <if>
- <sequence>
- <scope>
- <sequence>
- <receive operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
- <if>
- <sequence>
- <reply operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
- </sequence>
- <else>
+ <pick>
+ <onMessage operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT">
+ <sequence>
+ <scope>
+ <sequence>
+ <if>
<sequence>
- <reply faultName="invalidCredit" operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+ <reply operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
</sequence>
- </else>
- </if>
- </sequence>
- </scope>
- </sequence>
- </if>
+ <else>
+ <sequence>
+ <reply faultName="invalidCredit" operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+ </sequence>
+ </else>
+ </if>
+ </sequence>
+ </scope>
+ </sequence>
+ </onMessage>
+ </pick>
</sequence>
</process>
More information about the overlord-commits
mailing list