Package org.huihoo.willow.client

Source Code of org.huihoo.willow.client.SerialCaseDatabaseImpl

//----------------------------BEGIN LICENSE----------------------------
/*
* Willow : the Open Source WorkFlow Project
* Distributable under GNU LGPL license by gun.org
*
* Copyright (C) 2004-2010 huihoo.org
* Copyright (C) 2004-2010  ZosaTapo <dertyang@hotmail.com>
*
* ====================================================================
* Project Homepage : http://www.huihoo.org/willow
* Source Forge     : http://sourceforge.net/projects/huihoo
* Mailing list     : willow@lists.sourceforge.net
*/
//----------------------------END  LICENSE-----------------------------
package org.huihoo.willow.client;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.huihoo.willow.Context;
import org.huihoo.willow.session.SessionManager;
import org.huihoo.workflow.WorkflowException;
import org.huihoo.workflow.client.serial.model.SerialCase;
import org.huihoo.workflow.client.serial.model.SerialCaseDatabase;
import org.huihoo.workflow.client.serial.model.SerialParticipant;
import org.huihoo.workflow.client.serial.model.SerialProcess;
import org.huihoo.workflow.client.serial.model.SerialWork;
import org.huihoo.workflow.store.CaseDatabase;
import org.huihoo.workflow.store.UserDatabase;
import org.huihoo.workflow.store.persistent.PrimaryKey;
import org.huihoo.workflow.runtime.WorkflowCase;
import org.huihoo.workflow.runtime.WorkflowService;
import org.huihoo.workflow.runtime.WorkflowSession;
import org.huihoo.workflow.runtime.WorkflowWork;
import org.huihoo.workflow.xpdl.WorkflowProcess;

/**
* @author reic
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class SerialCaseDatabaseImpl extends SerialRemoteObject implements SerialCaseDatabase
{
  private transient WorkflowService workflowService;
 
  public SerialCaseDatabaseImpl(WorkflowService workflowService) throws RemoteException
  {
    super();
    this.workflowService = workflowService;
  }

  public CaseDatabase getWrappedObject()
  {
    return workflowService.getCaseDatabase();
  }

  //------------------------------------------------------------------------------------
  // LiveDispatcher utilities  
  //------------------------------------------------------------------------------------                                       
  public boolean accept(String sessionID, SerialWork workItem)
    throws WorkflowException, RemoteException
  {
    Context cotext=(Context)this.workflowService;
    SessionManager manager=cotext.getEngine().getSessionManager();
    WorkflowSession session=manager.findSession(sessionID);
   
    WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(workItem.getPackageID()).getMainProcess();
    WorkflowCase workflowCase=workflowService.getCaseDatabase().findWorkflowCase(session,workflowProcess,workItem.getCaseID());
    WorkflowWork workflowWork=workflowService.getCaseDatabase().findWorkflowWork(session,workflowProcess,workflowCase,workItem.getUUID());   
    return getWrappedObject().accept(session,workflowWork);
  }
  public boolean dispatch(String sessionID, SerialWork workItem)
    throws WorkflowException, RemoteException
  {
    Context cotext=(Context)this.workflowService;
    SessionManager manager=cotext.getEngine().getSessionManager();
    WorkflowSession session=manager.findSession(sessionID);
    WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(workItem.getPackageID()).getMainProcess();
    WorkflowCase workflowCase=workflowService.getCaseDatabase().findWorkflowCase(session,workflowProcess,workItem.getCaseID());
    WorkflowWork workflowWork=workflowService.getCaseDatabase().findWorkflowWork(session,workflowProcess,workflowCase,workItem.getUUID());   
    return getWrappedObject().dispatch(session,workflowWork);
  }
  public boolean revert(String sessionID, SerialWork workItem)
    throws WorkflowException, RemoteException
  {
    Context cotext=(Context)this.workflowService;
    SessionManager manager=cotext.getEngine().getSessionManager();
    WorkflowSession session=manager.findSession(sessionID);
    WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(workItem.getPackageID()).getMainProcess();
    WorkflowCase workflowCase=workflowService.getCaseDatabase().findWorkflowCase(session,workflowProcess,workItem.getCaseID());
    WorkflowWork workflowWork=workflowService.getCaseDatabase().findWorkflowWork(session,workflowProcess,workflowCase,workItem.getUUID());   
    return getWrappedObject().revert(session,workflowWork);
  }
  public boolean fetch(String sessionID, SerialWork workItem)
    throws WorkflowException, RemoteException
  {
    Context cotext=(Context)this.workflowService;
    SessionManager manager=cotext.getEngine().getSessionManager();
    WorkflowSession session=manager.findSession(sessionID);
   
    WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(workItem.getPackageID()).getMainProcess();
    WorkflowCase workflowCase=workflowService.getCaseDatabase().findWorkflowCase(session,workflowProcess,workItem.getCaseID());
    WorkflowWork workflowWork=workflowService.getCaseDatabase().findWorkflowWork(session,workflowProcess,workflowCase,workItem.getUUID());   
    return getWrappedObject().fetch(session,workflowWork);
  }
  //------------------------------------------------------------------------------------
  // LiveCase utilities  
  //------------------------------------------------------------------------------------                                       
  public String createLiveCase(String sessionID,
    SerialProcess liveProcess,
    SerialParticipant creator,
    java.util.Date creationTime,
    String primaryKey)
    throws WorkflowException, RemoteException
    {
      return createLiveCase(sessionID,liveProcess,creator,creationTime,primaryKey,"","");
    }
   
  public String createLiveCase(String sessionID,
  SerialProcess liveProcess,
    SerialParticipant creator,
    java.util.Date creationTime,
    String primaryKey,
    String name)
    throws WorkflowException, RemoteException
    {
      return createLiveCase(sessionID,liveProcess,creator,creationTime,primaryKey,name,"");
    }
  public String createLiveCase(String sessionID,
  SerialProcess liveProcess,
    SerialParticipant creator,
    java.util.Date creationTime,
    String primaryKey,
    String name,
    String description)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      UserDatabase userDatabase=workflowService.getUserDatabase();
      return caseDatabase.createWorkflowCase(session,workflowProcess,userDatabase.findParticipant(creator.getUUID()),creationTime,primaryKey,name,description);
    }

  public SerialCase findLiveCase(String sessionID,SerialProcess liveProcess,String caseId)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      WorkflowCase liveCase=caseDatabase.findWorkflowCase(session,workflowProcess,caseId);
      if(liveCase!=null)
      {
        return new SerialCase(liveCase);
      }
      return null;
    }
   
  public SerialCase findLiveCase(String sessionID,SerialProcess liveProcess,PrimaryKey primaryKey)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      WorkflowCase liveCase=caseDatabase.findWorkflowCase(session,workflowProcess,primaryKey);
      if(liveCase!=null)
      {
        return new SerialCase(liveCase);
      }
      return null;
    }
   
  public List getLiveCaseList(String sessionID,SerialProcess liveProcess,SerialParticipant creator) throws WorkflowException, RemoteException
  {
    Context cotext=(Context)this.workflowService;
    SessionManager manager=cotext.getEngine().getSessionManager();
    WorkflowSession session=manager.findSession(sessionID);
    WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
    CaseDatabase caseDatabase=workflowService.getCaseDatabase();
    UserDatabase userDatabase=workflowService.getUserDatabase();
    List caseList=caseDatabase.getWorkflowCaseList(session,workflowProcess,userDatabase.findParticipant(creator.getUUID()))
    List result=new ArrayList();
   
    for(int i=0;i<caseList.size();++i)
    {
      result.add(new SerialCase((WorkflowCase)caseList.get(i)));
    }
    return result;
  }

  public void deleteLiveCase(String sessionID,SerialProcess liveProcess,SerialCase liveCase)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
     
      caseDatabase.deleteWorkflowCase(session,workflowProcess,localCase);
    }
  public void cancelLiveCase(String sessionID,SerialProcess liveProcess,SerialCase liveCase)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
     
      caseDatabase.cancelWorkflowCase(session,workflowProcess,localCase);     
    }
  public void suspendLiveCase(String sessionID,SerialProcess liveProcess,SerialCase liveCase)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();

      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
     
      caseDatabase.suspendWorkflowCase(session,workflowProcess,localCase);   
    }
  public void resumeLiveCase(String sessionID,SerialProcess liveProcess,SerialCase liveCase)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();

      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
     
      caseDatabase.resumeWorkflowCase(session,workflowProcess,localCase);   
    }

  //------------------------------------------------------------------------------------
  // LiveWork utilities
  //------------------------------------------------------------------------------------     

  public SerialWork findLiveWork(String sessionID,SerialProcess liveProcess,SerialCase liveCase, String workId)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();

     
      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
     
      WorkflowWork workflowWork=caseDatabase.findWorkflowWork(session,workflowProcess,localCase,workId);
      if(workflowWork!=null)
      {
        return new SerialWork(workflowWork);
      }
      return null;
    }
   
  public List getLiveWorkList(String sessionID,SerialProcess liveProcess,SerialParticipant performer, int itemStatus)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
     
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      UserDatabase userDatabase=workflowService.getUserDatabase();
     
      List workList=caseDatabase.getWorkflowWorkList(session,workflowProcess,userDatabase.findParticipant(performer.getUUID()),itemStatus);
   
      List result=new ArrayList();
   
      for(int i=0;i<workList.size();++i)
      {
        result.add(new SerialWork((WorkflowWork)workList.get(i)));
      }
      return result;
    }
   
  public List getLiveWorkList(String sessionID,SerialProcess liveProcess,
    SerialCase liveCase,
    SerialParticipant performer,
    int itemStatus)
    throws WorkflowException, RemoteException
    {
      Context cotext=(Context)this.workflowService;
      SessionManager manager=cotext.getEngine().getSessionManager();
      WorkflowSession session=manager.findSession(sessionID);
     
      WorkflowProcess workflowProcess=workflowService.findWorkflowPackage(liveProcess.getPackageID()).findWorkflowProcess(liveProcess.getUUID());
      CaseDatabase caseDatabase=workflowService.getCaseDatabase();
      UserDatabase userDatabase=workflowService.getUserDatabase();
      WorkflowCase localCase=caseDatabase.findWorkflowCase(session,workflowProcess,liveCase.getUUID());
      String packageID=localCase.getWorkflowProcess().getWorkflowPackage().getUUID();
      if(!liveCase.getPackageID().equals(packageID))
      {
        throw new WorkflowException("crossWorkflow not supported");
      }
           
      List workList=caseDatabase.getWorkflowWorkList(session,workflowProcess,localCase,userDatabase.findParticipant(performer.getUUID()),itemStatus)
      List result=new ArrayList();
   
      for(int i=0;i<workList.size();++i)
      {
        result.add(new SerialWork((WorkflowWork)workList.get(i)));
      }
      return result;     
    }

}
TOP

Related Classes of org.huihoo.willow.client.SerialCaseDatabaseImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.