Exemple #1
0
 def add_child_ff_from_exchange(self, ff, exchange, **kwargs):
     """
     Uses a process intermediate exchange to define a child flow to the process.  If the exchange's termination
     is non-null, then the child exchange will also be terminated.
     Want to use a background flow if one exists already
     :param ff:
     :param exchange:
     :return:
     """
     try:
         bg = next(f for f in self.fragments(background=True) if f.term.terminates(exchange))
         f = LcFragment.new(exchange.flow['Name'], exchange.flow, exchange.direction,
                            parent=ff, exchange_value=exchange.value, **kwargs)
         f.terminate(bg)
     except StopIteration:
         f = LcFragment.from_exchange(ff, exchange)
     self.add_entity_and_children(f)
     return f