The advantage of IIPs over conventional parameters is that an input port can be attached either to an IIP connection or to a regular data stream connection - the receiving process doesn't know or care. Thus you could write an application that reads file foo, where 'foo' is specified in an IIP, and then very easily change it to read a sequence of files by feeding a stream of file names to the same input port.
See IIP for further discussion.
(*) This is being changed to one receive per invocation - if the IIP data needs to be preserved across activations, it is up to the component to save it somewhere, e.g. in instance variables. The current version of JavaFBP (http://www.jpaulmorrison.com/fbp/javaFBP-1.5.2.jar) still presents the IIP once per activation.