Listing 1
package ebxml.order;
import com.bea.control.EBXMLControl;
import com.bea.data.RawData;
import com.bea.xml.XmlObject;
import com.bea.data.MessageAttachment;
/**
* Defines a new ebXML control.
* @jc:ebxml from="BEA-id" to="Avitek-id" ebxml-service-name="OrderProcessing"
ebxml-action-mode="non-default"
*/
public interface OrderControl extends EBXMLControl, com.bea.control.ControlExtension
{
/**
* Send ebXML message to participant
* @param payload ebxml message payload(s)
*
*/
public void processOrder(XmlObject payload);
interface Callback extends EBXMLControl.Callback
{
/**
* Receive ebXML message from participant
* @param payload ebxml message payload(s)
* @jc:ebxml-method envelope="{env}"
*/
public void processInvoice(XmlObject payload, XmlObject env);
}
}
Listing 2
package ebxml.order;
import ...
/**
* @jpd:process process::
* <process name="Buyer">
* <clientRequest name="Start Buyer" method="startBuyer"/>
* <controlSend name="Send PurchaseOrder" method="orderCtrlProcessOrder"/>
* <controlReceive name="Receive Invoice" method="orderCtrl_processInvoice"/>
* </process>::
*/
public class Buyer implements com.bea.jpd.ProcessDefinition
{
...
/**
* @common:control
*/
private ebxml.order.OrderControl orderCtrl;
public void startBuyer(com.bea.tutorial.order.OrderDocument x0)
{
this.order = x0;
}
public void orderCtrlProcessOrder() throws Exception
{
orderCtrl.processOrder(this.order);
}
public void orderCtrl_processInvoice(XmlObject payload, XmlObject env)
{
this.invoice = payload;
}
}
Listing 3
package ebxml.order;
import ...
/**
* @jpd:process process::
* <process name="Seller">
* <clientRequest name="Receive PurchaseOrder" method="processOrder"/>
* <controlSend name="get Invoice From FileSystem" method="invoiceFileRead"/>
* <clientCallback name="Respond with Invoice" method="clientResponseCallbackHandler"/>
* </process>::
*
* binding="ebxml"
*
* @jpd:ebxml protocol-name="ebxml" ebxml-service-name="OrderProcessing" ebxml-action-mode="non-default"
*/
public class Seller implements com.bea.jpd.ProcessDefinition
{
......
/**
* @jpd:ebxml-method envelope="{env}"
*/
public void processOrder(com.bea.tutorial.order.OrderDocument x0, XmlObject env )
{
....
}
public void clientResponseCallbackHandler()
{
callback.processInvoice(this.invoice);
}
public void invoiceFileRead() throws Exception
{
....
}
public interface Callback
{
void processInvoice(com.bea.tutorial.invoice.InvoiceDocument x0);
}
}
Listing 4
<?xml version="1.0" encoding="UTF-8"?>
<trading-partner-management
xmlns="http://www.bea.com/2003/03/wli/tpm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xsi:schemaLocation="http://www.bea.com/2003/03/wli/tpm TPM.xsd"
message-tracking-default="ALL"
message-trace="false"
secure-audit-logging="false"
test-mode="true">
<trading-partner
name="Avitek"
status="ENABLED"
type="LOCAL"
is-default="false"
business-id="Avitek-id">
<ebxml-binding
name="Avitek-ebxml20-binding"
business-protocol-name="EBXML"
business-protocol-version="2.0"
is-default="false"
is-signature-required="false"
is-receipt-signature-required="false"
delivery-semantics="ONCEANDONLYONCE"
retries="3"
retry-interval="5 seconds"
persist-duration="5 seconds">
<transport
protocol="http"
protocol-version="1.1"
endpoint="http://127.0.0.1:7001/ebXML20/Avitek"
timeout="0 seconds">
</transport>
</ebxml-binding>
</trading-partner>
<trading-partner
name="BEA"
status="ENABLED"
type="LOCAL"
is-default="false"
business-id="BEA-id">
<signature-certificate
name="BEA-sig"
password-alias="BEA-sig">
</signature-certificate>
<ebxml-binding
name="BEA-ebxml20-binding"
business-protocol-name="EBXML"
business-protocol-version="2.0"
is-default="false"
is-signature-required="false"
is-receipt-signature-required="false"
delivery-semantics="ONCEANDONLYONCE"
retries="3"
retry-interval="5 seconds"
persist-duration="5 seconds">
<transport
protocol="http"
protocol-version="1.1"
endpoint="http://127.0.0.1:7001/ebXML20/BEA"
timeout="0 seconds">
</transport>
</ebxml-binding>
</trading-partner>
<service
name="/ebxmlWeb/ebxml/order/Seller.jpd"
service-type="PROCESS"
business-protocol="EBXML">
<service-profile
local-trading-partner="Avitek"
local-binding="Avitek-ebxml20-binding"
external-trading-partner="BEA"
external-binding="BEA-ebxml20-binding"
status="ENABLED"
message-tracking="ALL"/>
</service>
<service
name="ebxml.order.OrderControl"
service-type="SERVICECONTROL"
business-protocol="EBXML">
<service-profile
local-trading-partner="BEA"
local-binding="BEA-ebxml20-binding"
external-trading-partner="Avitek"
external-binding="Avitek-ebxml20-binding"
status="ENABLED"
message-tracking="ALL"/>
</service>
</trading-partner-management>