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 fUML.Semantics.Activities.IntermediateActivities.TokenList takeOfferedTokens() { // Take all the offered tokens and return them. TokenList tokens = new TokenList(); while (this.offers.size() > 0) { TokenList offeredTokens = this.offers.getValue(0).getOfferedTokens(); for (int i = 0; i < offeredTokens.size(); i++) { tokens.addValue(offeredTokens.getValue(i)); } this.offers.removeValue(0); } return tokens; } // takeOfferedTokens
public fUML.Semantics.Activities.IntermediateActivities.TokenList getOfferedTokens() { // Get the offered tokens (after which the tokens will still be // offered). TokenList tokens = new TokenList(); OfferList offers = this.offers; for (int i = 0; i < offers.size(); i++) { TokenList offeredTokens = offers.getValue(i).getOfferedTokens(); for (int j = 0; j < offeredTokens.size(); j++) { tokens.addValue(offeredTokens.getValue(j)); } } return tokens; } // getOfferedTokens
public fUML.Semantics.Activities.IntermediateActivities.TokenList takeOfferedTokens( int maxCount) { // Take all the offered tokens, up to the given maximum count of // non-null object tokens, and return them. TokenList tokens = new TokenList(); int remainingCount = maxCount; while (this.offers.size() > 0 & remainingCount > 0) { Offer offer = this.offers.getValue(0); TokenList offeredTokens = offer.getOfferedTokens(); int count = offer.countOfferedValues(); if (count <= remainingCount) { for (int i = 0; i < offeredTokens.size(); i++) { tokens.addValue(offeredTokens.getValue(i)); } remainingCount = remainingCount - count; this.offers.removeValue(0); } else { for (int i = 0; i < remainingCount; i++) { Token token = offeredTokens.getValue(i); if (token.getValue() != null) { tokens.addValue(token); } } offer.removeOfferedValues(remainingCount); remainingCount = 0; } } return tokens; } // takeOfferedTokens