package org.fireflow.engine.invocation; import org.fireflow.client.WorkflowSession; import org.fireflow.engine.entity.runtime.ActivityInstance; import org.fireflow.engine.exception.ServiceInvocationException; import org.fireflow.model.binding.ResourceBinding; import org.fireflow.model.binding.ServiceBinding; import org.fireflow.pvm.pdllogic.ContinueDirection; /** * 相当于TaskInstanceRunner;ServieInvoker的实现类必须是无状态的,即不能有成员变量。 * @author 陈乜云 * */ public interface ServiceInvoker { public static final int CLOSE_ACTIVITY = ContinueDirection.CLOSE_ME; public static final int WAITING_FOR_CLOSE = ContinueDirection.WAITING_FOR_CLOSE; public static final int START_NEXT_AND_WAITING_FOR_CLOSE = ContinueDirection.START_NEXT_AND_WAITING_FOR_CLOSE; /** * 执行Service,如果是同步调用,则返回true; * 如果是异步调用(需要长时间执行的service),则返回false; * 异步service结束后回调onServiceCompleted(WorkflowSession session,ActivityInstance activityInstance)方法 * @param theActivity TODO * @param params * @return true表示同步调用;false表示异步调用 */ public boolean invoke(WorkflowSession session,ActivityInstance activityInstance, ServiceBinding serviceBinding, ResourceBinding resourceBinding, Object theActivity)throws ServiceInvocationException; /** * ActivityInstanceManager调用该方法决定activityInstance是否可以结束。返回值是:<br> * ServiceInvoker.CLOSE_ACTIVITY:该值表示activityInstance可以被关闭,并启动后续活动;<<br> * ServiceInvoker.WAITING_FOR_CLOSE:该值表示activityInstance继续保持Runing状态<b<br> * ServiceInvoker.START_NEXT_AND_WAITING_FOR_CLOSE:该值表示启动后续活动,但是当前activityInstance继续保持Running状态。 * * @param session * @param activityInstance * @param theActivity TODO * @param serviceBinding TODO * @return */ public int determineActivityCloseStrategy(WorkflowSession session,ActivityInstance activityInstance, Object theActivity, ServiceBinding serviceBinding); }