/** * 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 org.fireflow.client.WorkflowSession; import org.fireflow.pvm.pdllogic.WorkflowBehavior; /** * 可执行过程语言的最顶层对象,类似于Java语言中的Object对象。<br> * 任何一个流程语言的语言元素在执行时,都映射成某种ProcessObject对象。 * @author 非也 * @version 2.0 */ public interface PObject { /** * ProcessObject的唯一标示 * @return */ public PObjectKey getKey(); public void setKey(PObjectKey key); /** * 获得该ProcessObject的原始的流程语言元素。 * @return */ public Object getWorkflowElement(); public void setWorkflowElement(Object wfElement); /** * 获得ProcessObject的行为对象。 * @return */ public WorkflowBehavior getWorkflowBehavior(); public void setWorkflowBehavior(WorkflowBehavior processBehavior); /** * 异常处理句柄 * @return */ public PObject getFaultHandler(String errorCode); public PObject getDefaultFaultHandler(); public void setFaultHandler(String errorCode,PObject hanlder); public void setFaultHandler(String errorCode,PObject hanlder,boolean isDefaultFaultHandler); /** * 补偿处理句柄 * @return */ public PObject getCompensationHandler(String compensationCode); public PObject getDefaultCompensationHandler(); public void setCompensationHandler(String compensationCode,PObject handler); public void setCompensationHandler(String compensationCode,PObject handler,boolean isDefaultCompensationHandler); /** * 取消操作的句柄 * (2012-02-05,Cancel动作容易和handleTermination混淆,意义也不是特别大,暂且注销) * @return */ /* public PObject getCancellationHandler(); public void setCancellationHandler(PObject pobject); */ /** * 是否接受取消操作,只有接受取消操作的PObject,系统才会调用他的handleCancellation()、handleTermination()方法。 * @return true表示可以接受取消操作。 */ public boolean isCancellable(); public void setCancellable(Boolean b); /** * 是否接受补偿操作,只有接受补偿操作的PObject,系统才会调用他的handleCompensation()方法。 * * @return */ public boolean isCompensable(); public void setCompensable(Boolean b); public boolean isAcceptCompensation(Token token,String compensationCode); /////////////////////////////////////////////////////////////////////// /////////////////////// ProcessObject的行为抽象 /////////////////// ////////////////////////////////////////////////////////////////////// /** * 获得一个新的token,token的状态必须是TokenState.INITIALIZED * @param sourceToken TODO */ public void takeToken(WorkflowSession session,Token thisToken, Token sourceToken); /** * 将token继续向前推动,token的状态必须小于TokenState.DELIMITER * @param session * @param sourceToken 触发existToken进行 * @param listenerToken 执行forward动作的token */ public void forwardToken(WorkflowSession session ,Token listenerToken, Token sourceToken); /** * 处理异常,Token的状态必须是TokenState.RUNNING * @param session * @param listenerToken * @param sourceToken TODO * @param errorCode TODO */ public void handleFault(WorkflowSession session ,Token listenerToken, Token sourceToken, String errorCode); /** * 处理补偿,Token的状态必须是TokenState.COMPLETED * @param session * @param listenerToken 响应补偿事件的Token * @param sourceToken TODO * @param compensationCode 补偿事件代码 */ public void handleCompensation(WorkflowSession session ,Token listenerToken, Token sourceToken, String compensationCode); /** * 处理取消操作,Token的状态必须是TokenState.RUNNING或者TokenState.FAULTING * * (2012-02-03,该动作容易和handleTermination混淆,意义也不是特别大,暂且注销) * @param session * @param existToken * @param sourceToken TODO * */ /* public void handleCancellation(WorkflowSession session ,Token existToken, Token sourceToken); */ /** * 处理中止操作, * @param session * @param listenerToken * @param sourceToken */ public void handleTermination(WorkflowSession session ,Token listenerToken, Token sourceToken); }