/*
 * Copyright (C) 2013 The University of Manchester
 * 
 * See the file "LICENSE" for license terms.
 */
/**
 * This package contains the Atom feed implementation for interactions for a particular workflow run.
 * @author Donal Fellows
 */
package org.taverna.server.master.interaction;
