/** * 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.pvm.kernel; import java.util.List; import org.fireflow.client.WorkflowSession; import org.fireflow.engine.context.EngineModule; import org.fireflow.engine.entity.repository.ProcessKey; import org.fireflow.engine.entity.runtime.ProcessInstance; /** * @author 非也 * @version 2.0 */ public interface KernelManager extends EngineModule{ public void loadProcess(ProcessKey pk ); /** * * @param session * @param childPOjbectKey * @param parentToken * @param childProcessInstance 启动ProcessInstance类型的PObject时,需要传入ProcessInstance实例 */ public void startPObject(WorkflowSession session,PObjectKey childPOjbectKey, Token parentToken,ProcessInstance childProcessInstance); /** * 在listenerToken上触发一个中止事件 * @param session * @param listenerToken * @param sourceToken */ public void fireTerminationEvent(WorkflowSession session,Token listenerToken,Token sourceToken); /** * 在listenerToken上触发一个补偿事件。 * @param session * @param listenerToken 处理补偿的token * @param sourceToken 产生补偿事件的token * @param compensationCode 补偿Id */ public void fireCompensationEvent(WorkflowSession session,Token listenerToken,Token sourceToken,List<String> compensationCodes); /** * 在listenerToken上触发一个异常事件 * @param session * @param listenerToken * @param sourceToken * @param errorCode */ public void fireFaultEvent(WorkflowSession session,Token listenerToken,Token sourceToken, String errorCode); /** * 将书签加入到队列中。 * @param bookMark */ public void addBookMark(BookMark bookMark); /** * 执行bookmark队列中的书签。 * @param session */ public void execute(WorkflowSession session); /** * 检查是否有子token存在于bookmark队列中。 * @param token * @return */ public boolean hasChildrenInQueue(Token token); /** * 根据TokenId和流程类别获取Token对象。 * @param tokenId * @param processType FPDL ,BPMN,BPEL等 * @return */ public Token getTokenById(String tokenId,String processType); public Token getTokenByElementInstanceId(String elementInstanceId,String processType); /** * 获得父Token * @param currentToken * @return */ public Token getParentToken(Token currentToken); /** * 获得token对应的processObject * @param token * @return */ public PObject getProcessObject(Token token); public Object getWorkflowElement(PObjectKey key); /** * 获得子token列表。 * @param token * @return */ public List<Token> getChildren(Token token); /** * 找出需要执行补偿操作的子节点。<br> * @param token * @return */ public List<Token> getChildren4Compensation(Token token); /** * 根据ProcessObjectKey获得ProcessObject对象。 * @param key * @return */ public PObject getProcessObject(PObjectKey key); public void saveOrUpdateToken(Token token); /** * 将缓存的PObject清除 */ public void clearCachedPObject(); }