/** * Copyright 2007-2010 非也 * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation。 * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses. * */ package org.fireflow.engine.modules.instancemanager; import org.fireflow.client.WorkflowSession; import org.fireflow.engine.context.EngineModule; import org.fireflow.engine.entity.runtime.ActivityInstance; import org.fireflow.engine.entity.runtime.ActivityInstanceState; import org.fireflow.engine.entity.runtime.ProcessInstance; import org.fireflow.engine.exception.ServiceInvocationException; import org.fireflow.engine.modules.instancemanager.event.ActivityInstanceEventTrigger; /** * @author 非也 * @version 2.0 */ public interface ActivityInstanceManager extends EngineModule{ public ActivityInstance createActivityInstance(WorkflowSession session,ProcessInstance processInstance,Object activity); public boolean runActivityInstance(WorkflowSession session,Object workflowElement,ActivityInstance activityInstance) throws ServiceInvocationException; /** * 返回值必须是 org.fireflow.pvm.pdllogic.ContinueDirection中定义的几个整形常量: * WAITING_FOR_CLOSE,CLOSE_ME_AND_AWAKEN_PARENT,RUN_AGAIN,CLOSE_ME_AND_START_NEXT,START_NEXT_AND_WAITING_FOR_CLOSE之一。 * @param session * @param activityInstance * @return */ public int tryCloseActivityInstance(WorkflowSession session,ActivityInstance activityInstance,Object workflowElement); public void onServiceCompleted(WorkflowSession session,ActivityInstance activityInstance); public void changeActivityInstanceState(WorkflowSession session,ActivityInstance activityInstance,ActivityInstanceState newState,Object workflowElement); public ActivityInstance suspendActivityInstance(WorkflowSession session , ActivityInstance activityInstance); public ActivityInstance restoreActivityInstance(WorkflowSession session , ActivityInstance activityInstance); public void fireActivityInstanceEvent(WorkflowSession session,ActivityInstance actInstance,Object workflowElement,ActivityInstanceEventTrigger eventType); }