public void fire(fUML.Semantics.Activities.IntermediateActivities.TokenList incomingTokens) { // Create forked tokens for all incoming tokens and offer them on all // outgoing edges. if (this.node == null) { Debug.println("[fire] Anonymous fork node."); } else { Debug.println("[fire] Fork node " + this.node.name + "..."); } ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges; int outgoingEdgeCount = outgoingEdges.size(); TokenList forkedTokens = new TokenList(); for (int i = 0; i < incomingTokens.size(); i++) { Token token = incomingTokens.getValue(i); ForkedToken forkedToken = new ForkedToken(); forkedToken.baseToken = token; forkedToken.remainingOffersCount = outgoingEdgeCount; forkedToken.baseTokenIsWithdrawn = false; forkedTokens.addValue(forkedToken); } this.addTokens(forkedTokens); this.sendOffers(forkedTokens); } // fire
public void sendOffer(fUML.Semantics.Activities.IntermediateActivities.TokenList tokens) { // Send an offer from the source to the target. // Keep the offered tokens until taken by the target. // (Note that any one edge should only be handling either all object // tokens or all control tokens.) Offer offer = new Offer(); for (int i = 0; i < tokens.size(); i++) { Token token = tokens.getValue(i); // Debug.println("[sendOffer] token value = " + token.getValue()); offer.offeredTokens.addValue(token); } this.offers.addValue(offer); this.target.receiveOffer(); } // sendOffer