⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iworkitem.java.svn-base

📁 Fire-Workflow-Engine-All-In-One-20090208 包含全部文档
💻 SVN-BASE
字号:
/**
 * Copyright 2007-2008 陈乜云(非也,Chen Nieyun)
 * 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;

import java.util.Date;
import java.util.List;

import org.fireflow.kenel.KenelException;

/**
 * @author chennieyun
 *
 */
public interface IWorkItem{

    public static final int INITIALIZED = 0;
    public static final int STARTED = 1;
    public static final int COMPLETED = 2;
    public static final int CANCELED = -1;

    public String getId();

    public Integer getState();

    public void setComments(String s);

    public String getComments();

    public Date getCreatedTime();

    public Date getSignedTime();

    public Date getEndTime();

    public String getActorId();

    public ITaskInstance getTaskInstance();

    public void sign() throws EngineException, KenelException;
    
    /**
     * 结束当前WorkItem;并由工作流引擎根据流程定义决定下一步操作。引擎的执行规则如下<br/>
     * 1、工作流引擎首先判断该WorkItem对应的TaskInstance是否可以结束。
     * 如果TaskInstance的assignment策略为ANY,或者,assignment策略为ALL且它所有的WorkItem都已经完成
     * 则结束当前TaskInstance<br/>
     * 2、判断TaskInstance对应的ActivityInstance是否可以结束。如果ActivityInstance的complete strategy
     * 为ANY,或者,complete strategy为ALL且他的所有的TaskInstance都已经结束,则结束当前ActivityInstance<br/>
     * 3、根据流程定义,启动下一个Activity,并创建相关的TaskInstance和WorkItem
     * @throws org.fireflow.engine.EngineException
     * @throws org.fireflow.kenel.KenelException
     */
    public void complete() throws EngineException, KenelException;

    /**
     * 结束当前WorkItem,并启动下一个Activity及其Task,将新创建的TaskInstance分配给nextActorIds中的所有Actor。<br/>
     * 该方法只有在如下条件下才能正确执行,否则引擎抛出EngineException,流程状态恢复到调用该方法前的状态。<br/>
     * 1)当前Activity和下一个Activity在同一个“执行线”上<br/>
     * 2)下一个Activity有且只有一个Form类型的Task,其他类型的Task不限定。<br/>
     * 3)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 4)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * 
     * 一句话,当前Acitivity和下一个Activity组成一个“简单流程”的情况下,才可以结束当前Activity,并指定下一个Activity的操作人。<br/>
     * @param nextActorIds 指定的下一个Activity操作者ID列表
     * @throws org.fireflow.engine.EngineException 
     * @throws org.fireflow.kenel.KenelException
     */
    public void junpToNextActivity(List<String> nextActorIds) throws EngineException, KenelException;

    /**
     * 结束当前WorkItem,并启动下一个Activity及其Task,将新创建的TaskInstance分配给nextActorIds中的所有Actor。<br/>
     * 该方法只有在如下条件下才能正确执行,否则引擎抛出EngineException,流程状态恢复到调用该方法前的状态。<br/>
     * 1)当前Activity和下一个Activity在同一个“执行线”上<br/>
     * 2)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 3)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * 
     * 一句话,当前Acitivity和下一个Activity组成一个“简单流程”的情况下,才可以结束当前Activity,并指定下一个Activity的操作人。<br/>
     * @param nextActorIds
     * @param needSign 是否需要签收
     * @throws org.fireflow.engine.EngineException
     * @throws org.fireflow.kenel.KenelException
     */
    public void junpToNextActivity(List<String> nextActorIds,boolean needSign) throws EngineException, KenelException;

    /**
     * 结束当前WorkItem,启动指定的Activity,引擎调用流程设计时指定的AssignmentHandler分配任务。<br/>
     * 只有满足如下条件的情况下,该方法才能成功执行,否则抛出EngineException,流程状态恢复到调用该方法之前的状态。<br/>
     * 1)当前Activity和即将启动的Acitivty必须在同一个执行线上<br/>
     * 2)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 3)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * @param activityId 将要被启动的ActivityId
     * @throws org.fireflow.engine.EngineException 
     * @throws org.fireflow.kenel.KenelException
     */
    public void jumpTo(String activityId) throws EngineException, KenelException;

    /**
     * 结束当前WorkItem,启动指定的Activity,引擎将新的TaskInstance分配给nextActorIds<br/>
     * 只有满足如下条件的情况下,该方法才能成功执行,否则抛出EngineException,流程状态恢复到调用该方法之前的状态。<br/>
     * 1)当前Activity和即将启动的Acitivty必须在同一个执行线上<br/>
     * 2)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 3)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * @param activityId 将要被启动的ActivityId
     * @param nextActorIds 将新的TaskInstance分配给nextActorIds列表中的Actor
     * @throws org.fireflow.engine.EngineException
     * @throws org.fireflow.kenel.KenelException
     */
    public void jumpTo(String activityId, List<String> nextActorIds) throws EngineException, KenelException;

    /**
     * 结束当前WorkItem,启动指定的Activity,引擎将新的TaskInstance分配给nextActorIds<br/>
     * 只有满足如下条件的情况下,该方法才能成功执行,否则抛出EngineException,流程状态恢复到调用该方法之前的状态。<br/>
     * 1)当前Activity和即将启动的Acitivty必须在同一个执行线上<br/>
     * 2)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 3)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * @param activityId
     * @param nextActorIds
     * @param needSign 是否需要签收
     * @throws org.fireflow.engine.EngineException
     * @throws org.fireflow.kenel.KenelException
     */
    public void jumpTo(String activityId, List<String> nextActorIds,boolean needSign) throws EngineException, KenelException;
    
    
    
    /**
     * 结束当前WorkItem,启动指定的Acitvity,引擎将新的TaskInstance分配给上一次完成该Activity的操作者。</br>
     * 只有满足如下条件的情况下,该方法才能成功执行,否则抛出EngineException,流程状态恢复到调用该方法之前的状态。<br/>
     * 1)当前Activity和即将启动的Acitivty必须在同一个执行线上<br/>
     * 2)即将启动的Activity已经被执行过
     * 3)如果当前Task的assignment为Task.ALL且本WorkItem结束后仍然不能使得TaskInstance结束,引擎将抛出EngineException异常<br/>
     * 4)如果当前的Activity包含多个TaskInstance,且当前TaskInstance结束后ActivityInstance仍然不能结束,引擎将抛出EngineException异常
     * @param activityId
     * @throws org.fireflow.engine.EngineException
     * @throws org.fireflow.kenel.KenelException
     */
    public void loopTo(String activityId) throws EngineException, KenelException;
    
    public void reasignTo(String actorId);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -