Author: objectiser
Date: 2009-06-19 16:43:43 -0400 (Fri, 19 Jun 2009)
New Revision: 646
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/results/ESBBroker(a)Broker.scv
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/testmodels/ESBBroker(a)Broker.bpel
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/component/OnMessage.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Pick.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Scope.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/While.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)Broker.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)CreditAgency.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)SupplierTxnProcessor.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/ParserTest.java
Log:
Added conversion of Pick and While constructs from BPEL to Conversation Model.
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-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -230,33 +230,6 @@
}
}
- // Create variable
- if (varName != null) {
- org.jboss.tools.overlord.cdl.bpel.model.component.Variable var=
- bpelModel.getBPELProcess().getVariable(varName);
-
- if (var == null) {
- var = new org.jboss.tools.overlord.cdl.bpel.model.component.Variable(bpelModel);
- var.setName(varName);
-
- String mesgType=InteractionPatterns.getMessageTypeLocalPart(interaction);
- String namespace=InteractionPatterns.getMessageTypeNameSpace(interaction);
-
- // Find namespace prefix
- if (namespace != null) {
- String prefix=bpelModel.getBPELProcess().addNamespace(namespace);
-
- if (prefix != null) {
- mesgType = prefix+":"+mesgType;
- }
- }
-
- var.setMessageType(mesgType);
-
- bpelModel.getBPELProcess().addVariable(var, -1);
- }
- }
-
// Set details on interaction
act.setPartnerLink(pl.getName());
act.setPortType(portType);
@@ -266,6 +239,33 @@
}
}
+ // Create variable
+ if (varName != null) {
+ org.jboss.tools.overlord.cdl.bpel.model.component.Variable var=
+ bpelModel.getBPELProcess().getVariable(varName);
+
+ if (var == null) {
+ var = new org.jboss.tools.overlord.cdl.bpel.model.component.Variable(bpelModel);
+ var.setName(varName);
+
+ String mesgType=InteractionPatterns.getMessageTypeLocalPart(interaction);
+ String namespace=InteractionPatterns.getMessageTypeNameSpace(interaction);
+
+ // Find namespace prefix
+ if (namespace != null) {
+ String prefix=bpelModel.getBPELProcess().addNamespace(namespace);
+
+ if (prefix != null) {
+ mesgType = prefix+":"+mesgType;
+ }
+ }
+
+ var.setMessageType(mesgType);
+
+ bpelModel.getBPELProcess().addVariable(var, -1);
+ }
+ }
+
return(ret);
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/OnMessage.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/OnMessage.java 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/OnMessage.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -20,7 +20,11 @@
import java.util.List;
import org.jboss.tools.overlord.cdl.bpel.model.BPELLanguageModel;
+import org.scribble.conversation.model.ConversationInteraction;
import org.scribble.model.Activity;
+import org.scribble.model.MessageSignature;
+import org.scribble.model.Role;
+import org.scribble.model.TypeReference;
/**
* This class represents the 'onMessage' construct contained
@@ -167,10 +171,49 @@
return(m_activity);
}
+ /**
+ * This method attempts to identify the server's partner role name.
+ *
+ * @return The partner role
+ */
+ protected String getServerPartnerRole() {
+ String ret=getPartnerLink();
+ int index=-1;
+
+ if (ret != null && (index=ret.indexOf("To")) != -1) {
+ ret = ret.substring(0, index);
+ }
+
+ return(ret);
+ }
+
@Override
public void convert(List<Activity> activities, ConversionContext context) {
- // TODO Auto-generated method stub
+ ConversationInteraction interaction=new ConversationInteraction();
+
+ TypeReference tref=new TypeReference();
+
+ Variable var=context.getVariable(getVariable());
+
+ if (var != null) {
+ tref.setAlias(var.getMessageType());
+ }
+
+ MessageSignature ms=new MessageSignature();
+ ms.setOperation(getOperation());
+ ms.getTypes().add(tref);
+
+ interaction.setFromRole(new Role(getServerPartnerRole()));
+ interaction.setToRole(new Role(context.getRole()));
+
+ interaction.setMessageSignature(ms);
+
+ activities.add(interaction);
+
+ if (getActivity() != null) {
+ getActivity().convert(activities, context);
+ }
}
private BPELElement m_activity;
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Pick.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Pick.java 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Pick.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -17,6 +17,7 @@
*/
package org.jboss.tools.overlord.cdl.bpel.model.component;
+import org.scribble.conversation.model.ConditionalBlock;
import org.scribble.model.*;
import org.scribble.model.admin.ModelListener;
import org.jboss.tools.overlord.cdl.bpel.model.*;
@@ -208,6 +209,25 @@
*/
public void convert(java.util.List<Activity> activities,
ConversionContext context) {
+
+ org.scribble.conversation.model.If elem=
+ new org.scribble.conversation.model.If();
+
+ // Convert 'onMessage' paths
+ for (int i=0; i < getOnMessages().size(); i++) {
+ OnMessage onMessageElem=getOnMessages().get(i);
+
+ ConditionalBlock cb = new ConditionalBlock();
+
+ onMessageElem.convert(cb.getContents(), context);
+
+ elem.getConditionalBlocks().add(cb);
+ }
+
+ // TODO: If alarms defined, then model these using a
+ // try/catch with interrupt?
+
+ activities.add(elem);
}
private java.util.List<OnMessage> m_onMessages=
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Scope.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Scope.java 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/Scope.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -576,6 +576,18 @@
}
activities.add(choice);
+ } else {
+ // Store in local var, in case try/catch block needs to be
+ // added
+ java.util.List<Activity> acts=activities;
+
+ // TODO: Check if try/catch block is required
+
+
+ // Convert normal activities in scope
+ if (getActivity() != null) {
+ getActivity().convert(acts, context);
+ }
}
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/While.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/While.java 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/component/While.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -83,6 +83,17 @@
*/
public void convert(java.util.List<Activity> activities,
ConversionContext context) {
+
+ org.scribble.conversation.model.While elem=
+ new org.scribble.conversation.model.While();
+
+ // TODO: Convert while expression
+
+ if (getActivity() != null) {
+ getActivity().convert(elem.getBlock().getContents(), context);
+ }
+
+ activities.add(elem);
}
/**
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)Broker.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)Broker.bpel 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)Broker.bpel 2009-06-19
20:43:43 UTC (rev 646)
@@ -8,14 +8,15 @@
<variables>
<variable messageType="enquiry" name="enquiryVar"/>
<variable messageType="requestForQuote"
name="requestForQuoteVar"/>
+ <variable messageType="quote" name="quoteVar"/>
<variable messageType="quoteList"
name="quoteListVar"/>
+ <variable messageType="buy" name="buyVar"/>
<variable messageType="CreditCheckRequest"
name="creditCheckRequestVar"/>
<variable messageType="CreditCheckOk"
name="creditCheckOkVar"/>
<variable messageType="orderConfirmed"
name="orderConfirmedVar"/>
<variable messageType="bookingReference"
name="bookingReferenceVar"/>
<variable messageType="CreditCheckInvalid"
name="creditCheckInvalidVar"/>
<variable messageType="orderRejected"
name="orderRejectedVar"/>
- <variable messageType="buy" name="buyVar"/>
<variable messageType="cancel" name="cancelVar"/>
</variables>
<sequence>
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)CreditAgency.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)CreditAgency.bpel 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)CreditAgency.bpel 2009-06-19
20:43:43 UTC (rev 646)
@@ -3,9 +3,9 @@
<partnerLink myRole="CreditAgencyService"
name="BrokerToCreditAgency"
partnerLinkType="BrokerToCreditAgencyServiceLT"/>
</partnerLinks>
<variables>
+ <variable messageType="CreditCheckRequest"
name="creditCheckRequestVar"/>
<variable messageType="CreditCheckOk"
name="creditCheckOkVar"/>
<variable messageType="CreditCheckInvalid"
name="creditCheckInvalidVar"/>
- <variable messageType="CreditCheckRequest"
name="creditCheckRequestVar"/>
</variables>
<sequence>
<pick>
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)SupplierTxnProcessor.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)SupplierTxnProcessor.bpel 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker(a)SupplierTxnProcessor.bpel 2009-06-19
20:43:43 UTC (rev 646)
@@ -3,8 +3,8 @@
<partnerLink myRole="SupplierTxnProcessorService"
name="BrokerToSupplierTxnProcessor"
partnerLinkType="BrokerToSupplierTxnProcessorServiceLT"/>
</partnerLinks>
<variables>
+ <variable messageType="orderConfirmed"
name="orderConfirmedVar"/>
<variable messageType="bookingReference"
name="bookingReferenceVar"/>
- <variable messageType="orderConfirmed"
name="orderConfirmedVar"/>
</variables>
<sequence>
<pick>
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/ParserTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/ParserTest.java 2009-06-18
21:37:10 UTC (rev 645)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/ParserTest.java 2009-06-19
20:43:43 UTC (rev 646)
@@ -33,6 +33,7 @@
public static TestSuite suite() {
TestSuite suite = new TestSuite("BPEL->Conversation Parser Tests");
+ suite.addTest(new BPELToConversationTest("ESBBroker@Broker"));
suite.addTest(new BPELToConversationTest("PurchaseGoods@Buyer"));
suite.addTest(new
BPELToConversationTest("PurchaseGoods@CreditAgency"));
suite.addTest(new BPELToConversationTest("PurchaseGoods@Store"));
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/results/ESBBroker(a)Broker.scv
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/results/ESBBroker(a)Broker.scv
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/results/ESBBroker(a)Broker.scv 2009-06-19
20:43:43 UTC (rev 646)
@@ -0,0 +1,25 @@
+namespace null;
+
+conversation ESBBrokerProcess_Broker@Broker implements ESBBroker@Broker {
+ makeEnquiry(enquiry) from Buyer to Broker;
+ while {
+ getQuote(requestForQuote) from Broker to SupplierQuoteEngine;
+ getQuote(quote) from SupplierQuoteEngine to Broker;
+ }
+ makeEnquiry(quoteList) from Broker to Buyer;
+ if {
+ buy(buy) from Buyer to Broker;
+ checkCredit(CreditCheckRequest) from Broker to CreditAgency;
+ if {
+ checkCredit(CreditCheckOk) from CreditAgency to Broker;
+ confirm(orderConfirmed) from Broker to SupplierTxnProcessor;
+ confirm(bookingReference) from SupplierTxnProcessor to Broker;
+ buy(bookingReference) from Broker to Buyer;
+ } else if {
+ checkCredit(CreditCheckInvalid) from CreditAgency to Broker;
+ buy(orderRejected) from Broker to Buyer;
+ }
+ } else if {
+ cancel(cancel) from Buyer to Broker;
+ }
+}
\ No newline at end of file
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/testmodels/ESBBroker(a)Broker.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/testmodels/ESBBroker(a)Broker.bpel
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/parser/testmodels/ESBBroker(a)Broker.bpel 2009-06-19
20:43:43 UTC (rev 646)
@@ -0,0 +1,62 @@
+<process
xmlns:ns0="http://www.scribble.org/conversation"
ns0:conversationType="ESBBroker@Broker" name="ESBBrokerProcess_Broker"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"...
+ <partnerLinks>
+ <partnerLink myRole="BrokerService" name="BuyerToBroker"
partnerLinkType="BuyerToBrokerServiceLT"/>
+ <partnerLink name="BrokerToSupplierQuoteEngine"
partnerLinkType="BrokerToSupplierQuoteEngineLT"
partnerRole="SupplierQuoteEngineRequester"/>
+ <partnerLink name="BrokerToCreditAgency"
partnerLinkType="BrokerToCreditAgencyLT"
partnerRole="CreditAgencyRequester"/>
+ <partnerLink name="BrokerToSupplierTxnProcessor"
partnerLinkType="BrokerToSupplierTxnProcessorLT"
partnerRole="SupplierTxnProcessorRequester"/>
+ </partnerLinks>
+ <variables>
+ <variable messageType="enquiry" name="enquiryVar"/>
+ <variable messageType="requestForQuote"
name="requestForQuoteVar"/>
+ <variable messageType="quote" name="quoteVar"/>
+ <variable messageType="quoteList"
name="quoteListVar"/>
+ <variable messageType="buy" name="buyVar"/>
+ <variable messageType="CreditCheckRequest"
name="creditCheckRequestVar"/>
+ <variable messageType="CreditCheckOk"
name="creditCheckOkVar"/>
+ <variable messageType="orderConfirmed"
name="orderConfirmedVar"/>
+ <variable messageType="bookingReference"
name="bookingReferenceVar"/>
+ <variable messageType="CreditCheckInvalid"
name="creditCheckInvalidVar"/>
+ <variable messageType="orderRejected"
name="orderRejectedVar"/>
+ <variable messageType="cancel" name="cancelVar"/>
+ </variables>
+ <sequence>
+ <receive operation="makeEnquiry"
partnerLink="BuyerToBroker" portType="BrokerPT"
variable="enquiryVar"/>
+ <while>
+ <sequence>
+ <scope>
+ <sequence>
+ <invoke inputVariable="requestForQuoteVar"
operation="getQuote" outputVariable="quoteVar"
partnerLink="BrokerToSupplierQuoteEngine"
portType="SupplierQuoteEnginePT"/>
+ </sequence>
+ </scope>
+ </sequence>
+ </while>
+ <reply operation="makeEnquiry" partnerLink="BuyerToBroker"
portType="BrokerPT" variable="quoteListVar"/>
+ <pick>
+ <onMessage operation="buy" partnerLink="BuyerToBroker"
portType="BrokerPT" variable="buyVar">
+ <sequence>
+ <scope>
+ <sequence>
+ <scope>
+ <faultHandlers>
+ <catch faultName="invalidCredit"
faultVariable="creditCheckInvalidVar">
+ <sequence>
+ <reply faultName="rejected"
operation="buy" partnerLink="BuyerToBroker"
portType="BrokerPT" variable="orderRejectedVar"/>
+ </sequence>
+ </catch>
+ </faultHandlers>
+ <sequence>
+ <invoke
inputVariable="creditCheckRequestVar" operation="checkCredit"
outputVariable="creditCheckOkVar" partnerLink="BrokerToCreditAgency"
portType="CreditAgencyPT"/>
+ <invoke
inputVariable="orderConfirmedVar" operation="confirm"
outputVariable="bookingReferenceVar"
partnerLink="BrokerToSupplierTxnProcessor"
portType="SupplierTxnProcessorPT"/>
+ <reply operation="buy"
partnerLink="BuyerToBroker" portType="BrokerPT"
variable="bookingReferenceVar"/>
+ </sequence>
+ </scope>
+ </sequence>
+ </scope>
+ </sequence>
+ </onMessage>
+ <onMessage operation="cancel"
partnerLink="BuyerToBroker" portType="BrokerPT"
variable="cancelVar">
+ <sequence/>
+ </onMessage>
+ </pick>
+ </sequence>
+</process>