ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tammo van Lessen <tvanles...@gmail.com>
Subject Re: Links
Date Thu, 13 Aug 2015 21:41:19 GMT
Hi Duplex,

the link name could be looked up using an XPath expression, e.g.
./bpel:sources/bpel:source/@linkName should return the name of the source
links.

For the HTML output I see two options:

a) You adopt the data model from BPEL and add two attributes to the HTML
with a comma-separated list of source and target link names. This could
look like this:

<div id="pr-1.sq-1.fw-1.empty-1" class="bpel expand bpel_empty"
data-sources="toBuyConfirm,toSellConfirm" data-targets="
buyToSettle,sellToSettle">

The following links could help to create such lists:
http://stackoverflow.com/questions/666584/how-do-i-generate-a-comma-separated-list-with-xslt-xpath

b) You add a data attribute that contains a list of activities the current
activities link to. Eg:
<div id="pr-1.sq-1.fw-1.empty-1" class="bpel expand bpel_empty"
data-connectTo="pr-1.sq-1.fw-1.sq.receive-1,pr-1.sq-1.fw-1.receive">

For a) you need to do the lookups at the javascript side, i.e. for each
activity that has a data-sources attribute you iterate over the list of
link names and search all nodes that have that linkName present in a
data-targets attribute. Get the id of those nodes and pass it to jsplumbs
connect method.

For b) you have the IDs already directly in the element, i.e. you can
iterate over all activities that have a non-empty data-connectTo attribute
and create jsplumb connections from the current element to all elements
with the IDs in the connectTo attribute. This is a bit more work on the
XSLT side because you need to do the lookups already with XPath.

I guess option a) is slightly more straight forward.

HTH,
  Tammo

On Thu, Aug 13, 2015 at 1:03 PM, tony pro <tony14pro@gmail.com> wrote:

> Ok from the Flow-GraphExample.bpel file we have this inside the flow
> component
>
>
>
> ****************************************************************************code
> start
>
> **************************************************************************************
> <flow name="Flow" suppressJoinFailure="yes">
>             <links>
>                 <link name="buyToSettle" />
>                 <link name="sellToSettle" />
>                 <link name="toBuyConfirm" />
>                 <link name="toSellConfirm" />
>             </links>
>
>             <!-- Buyer and seller information in parallel -->
>             <sequence>
>                 <receive name="receiveBuyerInformation"
>  partnerLink="MyRoleLink" operation="startProcessSync"
> portType="ti:TestInterfacePortType" variable="BuyerInformationRequest">
>                     <sources>
>                         <source linkName="buyToSettle" />
>                     </sources>
>                     <correlations>
>                         <correlation set="CorrelationSet" initiate="no"/>
>                     </correlations>
>                 </receive>
>                 <assign name="AssignBuyerInformationReplyData">
>                     <copy>
>                         <from>$BuyerInformationRequest.inputPart</from>
>                         <to variable="BuyerInformationResponse"
> part="outputPart"/>
>                     </copy>
>                 </assign>
>                 <reply name="ReplyToReceiveBuyerInformation"
> partnerLink="MyRoleLink" operation="startProcessSync"
> portType="ti:TestInterfacePortType" variable="BuyerInformationResponse"/>
>             </sequence>
>             <receive name="receiveSellerInformation"
>  partnerLink="MyRoleLink" operation="startProcessAsync"
> portType="ti:TestInterfacePortType" variable="SellerInformationRequest">
>                 <sources>
>                     <source linkName="sellToSettle" />
>                 </sources>
>                 <correlations>
>                     <correlation set="CorrelationSet" initiate="no"/>
>                 </correlations>
>             </receive>
>
>             <!-- Merge the requests -->
>             <empty name="settleTrade" partnerLink="MyRoleLink" >
>                 <targets>
>                     <joinCondition>$buyToSettle and
> $sellToSettle</joinCondition>
>                         <target linkName="buyToSettle" />
>                         <target linkName="sellToSettle" />
>                 </targets>
>                 <sources>
>                     <source linkName="toBuyConfirm" />
>                     <source linkName="toSellConfirm" />
>                 </sources>
>             </empty>
>
>             <!-- Reply the result. We need an extra invocation here,
> because in the test setting, buyer and seller are
>             the same entity which would deadlock itself if each request is
> synchronous. The purpose of this test is to
>             verify the correct processing of links and parallelism  -->
>             <sequence>
>                 <receive name="confirmBuyerInformation"
>  partnerLink="MyRoleLink" operation="startProcessSync"
> portType="ti:TestInterfacePortType" variable="BuyerInformationRequest">
>                     <targets>
>                         <target linkName="toBuyConfirm" />
>                     </targets>
>                     <correlations>
>                         <correlation set="CorrelationSet" initiate="no"/>
>                     </correlations>
>                 </receive>
>                 <assign name="AssignConfirmBuyerInformationReplyData">
>                     <copy>
>                         <from>$BuyerInformationRequest.inputPart</from>
>                         <to variable="BuyerInformationResponse"
> part="outputPart"/>
>                     </copy>
>                 </assign>
>                 <reply name="ReplyToConfirmBuyerInformation"
> partnerLink="MyRoleLink" operation="startProcessSync"
> portType="ti:TestInterfacePortType" variable="BuyerInformationResponse"/>
>             </sequence>
>             <receive name="confirmSellerInformation"
>  partnerLink="MyRoleLink" operation="startProcessAsync"
> portType="ti:TestInterfacePortType" variable="SellerInformationRequest">
>                 <targets>
>                     <target linkName="toSellConfirm" />
>                 </targets>
>                 <correlations>
>                     <correlation set="CorrelationSet" initiate="no"/>
>                 </correlations>
>             </receive>
> </flow>
>
>
> *******************************************************************************end
> of
>
> code********************************************************************************************************
>
> from here we have source and target components like this
>
> ******************************source***********************************
> receive name="receiveBuyerInformation"  partnerLink="MyRoleLink"
> operation="startProcessSync" portType="ti:TestInterfacePortType"
> variable="BuyerInformationRequest">
>                     <sources>
>                         <source linkName="buyToSettle" />
>                     </sources>
>                     <correlations>
>                         <correlation set="CorrelationSet" initiate="no"/>
>                     </correlations>
>                 </receive>
>
> **********************************or
> target*********************************
> <receive name="confirmBuyerInformation"  partnerLink="MyRoleLink"
> operation="startProcessSync" portType="ti:TestInterfacePortType"
> variable="BuyerInformationRequest">
>        <targets>
>               <target linkName="toBuyConfirm" />
>        </targets>
>        <correlations>
>               <correlation set="CorrelationSet" initiate="no"/>
>        </correlations>
> </receive>
>
>
> -------------------------------------------The problem is that
> --------------------------------------------------------------------------
> I need to know that which activities(receive, assign, reply, etc..) is
> having a source tag on it and which one is having the target corresponding
> to a particullar source
> So, if i knew how i can know that this activity is the source to the
> particular target activity, by passing a data-link to that particular
> activity it will be possible for me to
> link the using that javascript after the htnnl file have been generated.
>
> ------------------------------------------My
>
> approach---------------------------------------------------------------------
> I realized that each link has a attribute name(which optional) like here
>  <link name="buyToSettle" />
>  <link name="toBuyConfirm" />
>  <link name="toSellConfirm" />
>
> and each of that attribute(value for example "buyToSettle")  will be on the
> linkName attribute of each source or target tag of the bpel file like here:
> linkName="buyToSettle"
> Since JsPlumb links element only with they Id's, I have to get the source
> element that has the linkName attribute =  name attribute of the link tag
> and from there
> i can get the id of that activity. that is how i am taking it.
>
> NB: hope that the linkName attribute is not also optional.
>
> Question is it possible to to add a data-link atribute that has the same
> value as the attribute name of the link tag to the source and target
> activity while generating the html file ?
> --
>
> + <tony14pro@gmail.com>237 70274538
> Univertity of Buea Cameroon
> https://kamdjou-resume.firebaseapp.com/
>



-- 
Tammo van Lessen - http://www.taval.de

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message