}
public List getWorkList_impl(SpiCaseDatabaseImpl gCaseDatabaseImpl,WorkflowProcess workflowProcess,WorkflowParticipant operator,Connection conn,boolean canRelease,WorkflowParticipant performer, int itemStatus) throws WorkflowException
{
ArrayList workList = new ArrayList();
WorkflowWorkImpl workflowWork = null;
PreparedStatement pstmt = null;
ResultSet jrs = null;
try
{
SpiCaseIdGenerator caseIdGenerator=gCaseDatabaseImpl.getCaseIdGenerator();
SchemaContext schemaContext=gCaseDatabaseImpl.getSchemaContext();
Store storeConfig= gCaseDatabaseImpl.getStore();
WorkflowPackage workflowPackage = workflowProcess.getWorkflowPackage();
String packageId = workflowPackage.getUUID();
String processId = workflowProcess.getUUID();
String strSQL =
"SELECT * FROM "
+ schemaContext.getTableName(SchemaContext.SCHEMA_WORK)
+ " "
+ "WHERE vc_packageId=?"
+ " "
+ "AND vc_processid=?"
+ " "
+ "AND vc_performer=?";
switch (itemStatus)
{
case Constants.WORK_STATUS_ARRIVED :
strSQL += " AND (dat_arriveTime IS NOT NULL) AND (dat_acceptTime IS NULL) ";
break;
case Constants.WORK_STATUS_ACCEPTED :
strSQL += " AND (dat_acceptTime IS NOT NULL) AND (dat_dispatchTime IS NULL) ";
break;
case Constants.WORK_STATUS_DISPATCHED :
strSQL += " AND (dat_dispatchTime IS NOT NULL)";
break;
default :
throw new WorkflowException("Unkown workflowWork status : " + itemStatus);
//break;
}
pstmt = conn.prepareStatement(strSQL);
pstmt.setString(1, packageId);
pstmt.setString(2, processId);
pstmt.setString(3, notNullPerformer(performer).getUUID());
jrs = pstmt.executeQuery();
String parent_workId = null;
String vc_performer = null;
String vc_caseId = null;
String vc_activityId = null;
String vc_owner_processId = null;
WorkflowProcess ownerProcess = null;
while (jrs.next())
{
parent_workId = jrs.getString("vc_parent_workId");
vc_performer = jrs.getString("vc_performer");
vc_activityId = jrs.getString("vc_activityId");
vc_owner_processId = jrs.getString("vc_owner_processId");
vc_caseId = jrs.getString("vc_caseId");
if (parent_workId == null)
{
workflowWork = new WorkflowWorkImpl();
workflowWork.setWorkflowCase(findCase_impl(gCaseDatabaseImpl,workflowProcess,operator,conn,false,vc_caseId, false));
workflowWork.setUUID(jrs.getString("vc_uuid"));
ownerProcess = workflowPackage.findWorkflowProcess(vc_owner_processId);
workflowWork.setWorkflowActivity(ownerProcess.findWorkflowActivity(vc_activityId));
workflowWork.setArriveTime(DateTools.toJavaDate(jrs.getTimestamp("dat_arriveTime")));
workflowWork.setAcceptTime(DateTools.toJavaDate(jrs.getTimestamp("dat_acceptTime")));
workflowWork.setDispatchTime(DateTools.toJavaDate(jrs.getTimestamp("dat_dispatchTime")));
workflowWork.setPerformer(
gCaseDatabaseImpl.getWorkflowService().getUserDatabase().findParticipant(
vc_performer));
}
else
{
SubWorkImpl workflowSubWork = new SubWorkImpl();
workflowSubWork.setWorkflowCase(findCase_impl(gCaseDatabaseImpl,workflowProcess,operator,conn,false,vc_caseId, false));
workflowSubWork.setUUID(jrs.getString("vc_uuid"));
ownerProcess = workflowPackage.findWorkflowProcess(vc_owner_processId);
workflowSubWork.setWorkflowActivity(ownerProcess.findWorkflowActivity(vc_activityId));
workflowSubWork.setArriveTime(DateTools.toJavaDate(jrs.getTimestamp("dat_arriveTime")));
workflowSubWork.setAcceptTime(DateTools.toJavaDate(jrs.getTimestamp("dat_acceptTime")));
workflowSubWork.setDispatchTime(
DateTools.toJavaDate(jrs.getTimestamp("dat_dispatchTime")));
workflowWork.setPerformer(
gCaseDatabaseImpl.getWorkflowService().getUserDatabase().findParticipant(
vc_performer));
workflowSubWork.setParentWorkflowWork(
findWork_impl(gCaseDatabaseImpl,workflowProcess,operator,conn,false,workflowSubWork.getWorkflowCase(), parent_workId));