engineejbbean.java

来自「公司自己开发的工作流引擎」· Java 代码 · 共 441 行

JAVA
441
字号
package cn.com.iaspec.workflow.engine.ejb;

import java.util.*;
import javax.ejb.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.data.*;
import cn.com.iaspec.workflow.engine.*;
import cn.com.iaspec.workflow.engine.business.*;
import cn.com.iaspec.workflow.vo.workflow.*;
import cn.com.iaspec.workflow.engine.dao.AgenDAO;

public class EngineEJBBean
    implements SessionBean{
  SessionContext sessionContext;
  private static Logger logger=Logger.getLogger(EngineEJBBean.class);
  public void ejbCreate()
      throws CreateException{
  }

  public void ejbRemove(){
  }

  public void ejbActivate(){
  }

  public void ejbPassivate(){
  }

  public void setSessionContext(SessionContext sessionContext){
    this.sessionContext=sessionContext;
    this.sessionContext=sessionContext;
  }

  /**
   * 根据流程ID取得流程名称(返回ProcessDefine对象列表)
   * @param userinfo UserInfo
   * @throws Exception
   * @
   * @return ArrayList
   */
  public ArrayList getStartableProcessList(UserInfo userinfo){
    ArrayList list=null;
    try{
      list=new EngineControl().getStartableProcessList(userinfo);
      logger.info("调用---EngineControl--类getStartableProcessList方法成功----");
    }
    catch(Exception e){
      e.printStackTrace();
      logger.debug("调用---EngineControl--类getStartableProcessList方法失败----");
    }
    if(list!=null){
      return list;
    }

    return null;

  }

  /**
   * 通过取得由流程类别代码指定的可启动流程(返回ProcessDefine对象列表)
   * @param userinfo UserInfo
   * @param processTypeCode String
   * @throws Exception
   * @
   * @return ArrayList
   */
  public ArrayList getStartableProcessListByType(UserInfo userinfo,
      String processTypeCode){
    System.out.println("----------开始调用getStartableProcessListByType方法!");
    ArrayList list=null;
    try{
      list=new EngineControl().getStartableProcessListByType(userinfo,
          processTypeCode);
      logger.info("调用---EngineControl--类getStartableProcessListByType方法成功----");
    }
    catch(Exception e){
      e.printStackTrace();
      logger.debug("调用---EngineControl--类getStartableProcessListByType方法失败----");
    }
    if(list!=null){
      return list;
    }
    return null;

  }

  /**
   * 创建启动流程实例(并返回状态为1的工作项ID)
   * @param userinfo UserInfo
   * @param processDefineId String
   * @param title String
   * @param desc String
   * @throws CreateInstanceException
   * @throws Exception
   * @return long
   */
  public ProcessDefine startPorcessDefine(UserInfo userinfo,
      long processDefineId,String title,String desc)

  {

    ProcessDefine processDefine=null;
    try{

      processDefine=new EngineControl().startPorcessDefine(userinfo,
          processDefineId,title,desc);
      logger.info("调用---EngineControl--类startPorcessDefine方法----创建流程实例");
    }
    catch(Exception e){
      e.printStackTrace();
      logger.info("----创建流程实例失败-------");
      //throw new CreateInstanceException("----创建流程实例异常-----");
    }
    return processDefine;
  }

  /**
   * 根据工作流实例ID返回案件信息Task对象的集合
   * @param userinfo UserInfo
   * @param querytask QueryTask
   * @param pageinfo PageInfo
   * @return ArrayList
   */
  public ArrayList getTaskListByUser(UserInfo userinfo){
    ArrayList arraylist=new ArrayList();
    try{
      arraylist=new EngineControl().getTaskListByUser(userinfo);
      logger.info("----返回案件信息Task对象的集合成功-------");

    }
    catch(Exception e){
      e.printStackTrace();
      logger.info("----返回案件信息Task对象的集合失败-------");
    }
    return arraylist;

  }

  /**
   *  返回活动节点的对象NextActivityInfod对象(根据userinfo和工作项的ID:workItemID查询)
   * @param userinfo UserInfo
   * @param workItemID long
   * @return NextActivityInfo
   */
  public NextActivityInfo getNextActivityInfo(UserInfo userinfo,long workItemID){
    NextActivityInfo nextActioninfo=new NextActivityInfo();
    try{
      nextActioninfo=new ActivityTransferControl().getNextActivityInfo(userinfo,
          workItemID);
      logger.info("---- 返回活动节点的对象NextActivityInfod对象成功-------");
    }
    catch(Exception e){
      e.printStackTrace();
      logger.info("----返回活动节点的对象NextActivityInfod对象失败-------");
    }
    return nextActioninfo;
  }

  /**
   *设置任务迁移的函数变量
   * @param userinfo UserInfo
   * @param workitemID long
   * @param attributeName String
   * @param value String
   * @return int
   */
  public long modifyWorkItemRelevantData(UserInfo usernfo,long workitemID,
      String attributeName,String value){
    try{

      //workitemID=new ActivityFlowControl().modifyWorkItemRelevantData(userinfo,workitemID,attributeName, value);
      logger.info("---- 选择流程的流向成功-------");
      return workitemID;
    }
    catch(Exception e){
      e.printStackTrace();
      logger.info("---- 选择流程的流向失败-------");
    }
    return 0;
  }

  /**
   * 启动辅助子流程
   * @param userinfo UserInfo
   * @param proDefName String
   * @return ProcessDefine
   */
  public ProcessDefine startAssistantProcessDefinition(UserInfo userinfo,
      java.lang.String proDefName){
    ProcessDefine processDefine=null;
    try{
      processDefine=new AssistantWorkFlowControl().
          startAssistantProcessDefinition(userinfo,proDefName);
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return processDefine;
  }

  /**
   * 取得工作项的相关变信息
   * @param workItemId int
   * @param userInfo UserInfo
   * @return ActivtyVariable[]
   */
  public ActivityVariable[] getWorkItemAllVariableValue(long workItemId,
      UserInfo userInfo)
      throws Exception{
    GetWorkItemVariable gwv=new GetWorkItemVariable();
    return gwv.getWorkItemAllVariableValue(workItemId,userInfo);
  }

  /**
   * 工作流提交处理
   * @param workItemId 工作项id
   * @param registerId String 申诉登记号
   * @param projectId long 项目id
   * @param actVar ActivityVariable 活动变量
   * @param actParticipator Activity 活动参与者
   * @param nextActInfo NextActivityInfo 活动信息
   * @param userInfo UserInfo 当前用户信息
   * @param String parentProInstId 父流程实例id(辅助子流程类型使用)
   * @param String aidSubflowTag 是否辅助子流程类型,0 否,1是
   */
  public void processWorkflow(long workItemId,String registerId,long projectId,
      ActivityVariable[] actVar,List actParticipator,
      NextActivityInfo nextActInfo,UserInfo userInfo,String parentProInstId,
      String aidSubflowTag)
      throws Exception{
    ProcessWorkFlow proWorkflow=new ProcessWorkFlow(userInfo,parentProInstId,
        aidSubflowTag,projectId);
    proWorkflow.processWorkflow(workItemId,registerId,actVar,actParticipator,
        nextActInfo);
  }

  /**
   * 检出的工作项
   * @param userInfo UserInfo
   * @param workItemId long
   * @throws Exception
   */
  public void checkOutWorkItem(UserInfo userInfo,long workItemId)
      throws Exception{
    EngineControl engine=new EngineControl();
    engine.checkOutWorkItem(userInfo,workItemId);
  }

  /**
   * 流程记录查询
   * @param userinfo UserInfo
   * @param registerNO String
   * @return ArrayList
   * @throws Exception
   */
  public ArrayList QueryWorkflowLogInfo(UserInfo userinfo,String registerNO)
      throws Exception{
    ArrayList list=null;
    WorkflowLogInfoControl workflowloginfo=new WorkflowLogInfoControl();
    try{
      list=workflowloginfo.QueryWorkflowLogInfo(userinfo,registerNO);
    }
    catch(Exception e){
      e.printStackTrace();
    }

    return list;
  }

  /**
   * 批量分案处理
   * @param list List 需要批量处理的案件信息list,由BatchCaseInfo组成
   * @param nextActName 下一活动的名称
   */
  public void processBatchCase(List list,String nextActName,UserInfo userInfo)
      throws Exception{
    ProcessBatchCase process=new ProcessBatchCase(userInfo);
    process.processBatchCaseByNextActName(list,nextActName);
  }

  /**
   *申请工作
   * @param userinfo UserInfo
   * @param workItemID long
   * @return ApplyWorkItemInfo
   * @throws Exception
   */
  public ApplyWorkItemInfo applyWorkItem(UserInfo userInfo,long workItemID)
      throws Exception{
    ApplyWorkItemControl workItemControl=new ApplyWorkItemControl();
    return workItemControl.applyWorkItem(userInfo,workItemID);
  }

  /**
   * 取得待办任务个数
   * @param proInstanceID long
   * @return Task
   * @throws GetTaskBaseInfoException
   */
  public long getTaskListCount(UserInfo userInfo)
      throws Exception{
    return new EngineControl().getTaskListCount(userInfo);
  }

  public void newAndSaveWorkflow(WorkflowProcessInfo wfProInfo,
      String businessId)
      throws Exception{
    ProcessWorkFlow proWorkflow=new ProcessWorkFlow(wfProInfo.getUserInfo(),
        wfProInfo.getParentProInstId(),wfProInfo.getAidSubflowTag(),
        Long.parseLong(wfProInfo.getProjectId()));
    proWorkflow.newAndSaveWorkflow(wfProInfo.getUserInfo(),
        Long.parseLong(wfProInfo.getWorkitemId()),businessId);
  }

  public List queryCaseTask(TaskQueryCondition condition,
      cn.com.iaspec.workflow.data.PageInfo page)
      throws Exception{
//    TaskCaseQueryControl control=new TaskCaseQueryControl();
//    return control.queryCaseTask(condition,page);
    return null;
  }

  public StartedProcessInfo createAndStartProcess(long processDefineId,
      String businessName,String businessType,UserInfo userInfo,
      ArrayList prcesseVars)
      throws Exception{
    StartProcessControl control=new StartProcessControl();
    return control.createAndStartProcess(processDefineId,businessName,
        businessType,userInfo,prcesseVars);
  }

  public StartedProcessInfo createAndStartProcess(String processDefineName,
      String businessName,String businessType,UserInfo userInfo,
      ArrayList prcesseVars)
      throws Exception{
    StartProcessControl control=new StartProcessControl();
    return control.createAndStartProcess(processDefineName,businessName,
        businessType,userInfo,prcesseVars);
  }

  public void updateProcessTitle(String title,long processInstanceId)
      throws Exception{
    PublicProjectInfoControl control=new PublicProjectInfoControl();
    control.updateProcessTitle(title,processInstanceId);
  }

  public void updatePublicProjectTitle(String title,long projectId)
      throws Exception{
    PublicProjectInfoControl control=new PublicProjectInfoControl();
    control.updatePublicProjectTitle(title,projectId);
  }

  /**
   * 检查工作项是否有转寄权限
   *
   * @param workItemId long 工作项ID
   * @return boolean
   * @throws Exception
   */
  public boolean getWorkItemHasForwardPrivilege(long workItemId)
      throws Exception{
    ActivityControlService service=new ActivityControlService();
    return service.getWorkItemHasForwardPrivilege(workItemId);
  }

  /**
   * 转寄工作项
   *
   * @param workitemId long 工作项ID
   * @param newExecutor String 接受工作项人员ID
   * @param userInfo UserInfo
   * @throws Exception
   */
  public void reassignWorkitem(long workitemId,String newExecutor,UserInfo userInfo)
      throws Exception{
    EngineControl control = new EngineControl();
    control.reassignWorkitem(workitemId,newExecutor,userInfo);
  }

  /**
   * 查询所有有效流程定义
   *
   * @return List
   * @throws Exception
   */
  public List getAllProcess()throws Exception{
    EngineControl control = new EngineControl();
    return control.getAllProcesses();
  }

  /**
   * 查询活动是否有签收变量
   *
   * @param actId long  活动ID
   * @return int        若有定义,则返回该变量的值,若无定义则返回-1
   * @throws Exception
   */
  public int getSignInVar(long actId)throws Exception{
    ActivityControlService control = new ActivityControlService();
    return control.getSignInVar(actId);
  }

  /**
   * 人工修改工作项的属性值
   */
  public void updateWorkitemReleData(long workitemId,ActivityVariable[] vars,UserInfo userInfo)
      throws Exception{

    GetWorkItemVariable workitemVar = new GetWorkItemVariable();
    workitemVar.updateWorkitemReleData(workitemId,vars,userInfo);
  }

  /**
   * 配置iWorkflow使用的引擎连接信息
   *
   * @param hostName String     引擎IP
   * @param portName String     引擎端口
   * @param dbType String       iWorkflow使用的数据库类型
   * @throws Exception
   */
  public void setEngineConnectInfo(String hostName,String portName,String dbType)
      throws Exception{

    EngineControl engineControl = new EngineControl();
    engineControl.setEngineConnectInfo(hostName,portName,dbType);
  }

  /**
   * 取得活动的代理信息
   * @param activitys 活动uid数组
   * @return HashMap
   */
  public HashMap getActivityAgenInfo(String[] activityUids)
      throws Exception{
    AgenDAO dao=new AgenDAO();
    return dao.getActivityAgenInfo(activityUids);
  }


}

⌨️ 快捷键说明

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