Allowing loose coupling between complex e-Science applications has many advantages, such as being able to easily incorporate new applications and to flexibly specify how the applications are connected to transfer data between them. To facilitate efficient, flexible data transfers between applications, in this paper we describe methods for making decisions at runtime about when such transfers will occur, and for flexibly specifying when data transfers are desired. We also present preliminary experimental results that measure the overheads incurred by our approach.