org.compiere.wf - Workflow Engine :
* Remove SQL code and Replace for Query https://sourceforge.net/tracker/?func=detail&atid=879335&aid=2214883&group_id=176962 * use DB.getSQLValue*Ex methods * add WorkflowTest JUnit Test Case
This commit is contained in:
parent
db6295a9ad
commit
c1f7b16c08
|
@ -18,7 +18,6 @@ package org.compiere.wf;
|
|||
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Savepoint;
|
||||
|
@ -26,10 +25,12 @@ import java.sql.Timestamp;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.compiere.db.CConnection;
|
||||
import org.compiere.interfaces.Server;
|
||||
import org.compiere.model.MAttachment;
|
||||
|
@ -49,13 +50,13 @@ import org.compiere.model.MTable;
|
|||
import org.compiere.model.MUser;
|
||||
import org.compiere.model.MUserRoles;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WF_Activity;
|
||||
import org.compiere.print.ReportEngine;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.process.ProcessInfo;
|
||||
import org.compiere.process.StateEngine;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.DisplayType;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
|
@ -89,31 +90,19 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
*/
|
||||
public static MWFActivity[] get (Properties ctx, int AD_Table_ID, int Record_ID, boolean activeOnly)
|
||||
{
|
||||
ArrayList<MWFActivity> list = new ArrayList<MWFActivity>();
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
String sql = "SELECT * FROM AD_WF_Activity WHERE AD_Table_ID=? AND Record_ID=?";
|
||||
ArrayList<Object> params = new ArrayList<Object>();
|
||||
StringBuffer whereClause = new StringBuffer("AD_Table_ID=? AND Record_ID=?");
|
||||
params.add(AD_Table_ID);
|
||||
params.add(Record_ID);
|
||||
if (activeOnly)
|
||||
sql += " AND Processed<>'Y'";
|
||||
sql += " ORDER BY AD_WF_Activity_ID";
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, null);
|
||||
pstmt.setInt (1, AD_Table_ID);
|
||||
pstmt.setInt (2, Record_ID);
|
||||
rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add(new MWFActivity (ctx, rs, null));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
s_log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DB.close(rs, pstmt);
|
||||
rs = null; pstmt = null;
|
||||
whereClause.append(" AND Processed<>?");
|
||||
params.add(true);
|
||||
}
|
||||
List<MWFActivity> list = new Query(ctx, Table_Name, whereClause.toString(), null)
|
||||
.setParameters(params)
|
||||
.setOrderBy(COLUMNNAME_AD_WF_Activity_ID)
|
||||
.list();
|
||||
|
||||
MWFActivity[] retValue = new MWFActivity[list.size ()];
|
||||
list.toArray (retValue);
|
||||
|
@ -144,9 +133,6 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
return sb.toString();
|
||||
} // getActivityInfo
|
||||
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MWFActivity.class);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Standard Constructor
|
||||
|
@ -262,9 +248,12 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
} // getState
|
||||
|
||||
/**
|
||||
* Set Activity State
|
||||
* @param WFState
|
||||
* Set Activity State.
|
||||
* It also validates the new state and if is valid,
|
||||
* then create event audit and call {@link MWFProcess#checkActivities(String, PO)}
|
||||
* @param WFState
|
||||
*/
|
||||
@Override
|
||||
public void setWFState (String WFState)
|
||||
{
|
||||
if (m_state == null)
|
||||
|
@ -297,6 +286,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
Trace.printStack();
|
||||
setTextMsg(msg);
|
||||
save();
|
||||
// TODO: teo_sarca: throw exception ? please analyze the call hierarchy first
|
||||
}
|
||||
} // setWFState
|
||||
|
||||
|
@ -446,6 +436,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
* (Re)Set to Not Started
|
||||
* @param AD_WF_Node_ID now node
|
||||
*/
|
||||
@Override
|
||||
public void setAD_WF_Node_ID (int AD_WF_Node_ID)
|
||||
{
|
||||
if (AD_WF_Node_ID == 0)
|
||||
|
@ -1088,6 +1079,14 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
}
|
||||
}
|
||||
}
|
||||
else if(resp.isOrganization())
|
||||
{
|
||||
throw new AdempiereException("Support not implemented for "+resp);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AdempiereException("@NotSupported@ "+resp);
|
||||
}
|
||||
// end MZ
|
||||
}
|
||||
if (autoApproval
|
||||
|
@ -1216,7 +1215,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
DocAction doc = (DocAction)m_po;
|
||||
try
|
||||
{
|
||||
// Not pproved
|
||||
// Not approved
|
||||
if (!"Y".equals(value))
|
||||
{
|
||||
newState = StateEngine.STATE_Aborted;
|
||||
|
|
|
@ -16,15 +16,13 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.wf;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WF_EventAudit;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
|
||||
/**
|
||||
|
@ -68,32 +66,18 @@ public class MWFEventAudit extends X_AD_WF_EventAudit
|
|||
*/
|
||||
public static MWFEventAudit[] get (Properties ctx, int AD_WF_Process_ID, int AD_WF_Node_ID, String trxName)
|
||||
{
|
||||
ArrayList<MWFEventAudit> list = new ArrayList<MWFEventAudit>();
|
||||
String sql = "SELECT * FROM AD_WF_EventAudit "
|
||||
+ "WHERE AD_WF_Process_ID=?";
|
||||
ArrayList<Object> params = new ArrayList<Object>();
|
||||
StringBuffer whereClause = new StringBuffer("AD_WF_Process_ID=?");
|
||||
params.add(AD_WF_Process_ID);
|
||||
if (AD_WF_Node_ID > 0)
|
||||
sql += " AND AD_WF_Node_ID=?";
|
||||
sql += " ORDER BY AD_WF_EventAudit_ID";
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, trxName);
|
||||
pstmt.setInt (1, AD_WF_Process_ID);
|
||||
if (AD_WF_Node_ID > 0)
|
||||
pstmt.setInt (2, AD_WF_Node_ID);
|
||||
rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add (new MWFEventAudit (ctx, rs, trxName));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
s_log.log(Level.SEVERE, "get", e);
|
||||
}
|
||||
finally {
|
||||
DB.close(rs, pstmt);
|
||||
rs = null; pstmt = null;
|
||||
whereClause.append(" AND AD_WF_Node_ID=?");
|
||||
params.add(AD_WF_Node_ID);
|
||||
}
|
||||
List<MWFEventAudit> list = new Query(ctx, Table_Name, whereClause.toString(), trxName)
|
||||
.setParameters(params)
|
||||
.setOrderBy(COLUMNNAME_AD_WF_EventAudit_ID)
|
||||
.list();
|
||||
//
|
||||
MWFEventAudit[] retValue = new MWFEventAudit[list.size()];
|
||||
list.toArray (retValue);
|
||||
|
@ -125,10 +109,6 @@ public class MWFEventAudit extends X_AD_WF_EventAudit
|
|||
} // get
|
||||
|
||||
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MWFEventAudit.class);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Standard Constructor
|
||||
* @param ctx context
|
||||
|
|
|
@ -49,7 +49,7 @@ public class MWFNode extends X_AD_WF_Node
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7541139807980623316L;
|
||||
private static final long serialVersionUID = 4330589837679937718L;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -533,6 +533,7 @@ public class MWFNode extends X_AD_WF_Node
|
|||
* @param newRecord new
|
||||
* @return true if can be saved
|
||||
*/
|
||||
@Override
|
||||
protected boolean beforeSave (boolean newRecord)
|
||||
{
|
||||
if(MWorkflow.WORKFLOWTYPE_Manufacturing.equals(getWorkflow().getWorkflowType()))
|
||||
|
@ -632,6 +633,7 @@ public class MWFNode extends X_AD_WF_Node
|
|||
* @param success success
|
||||
* @return saved
|
||||
*/
|
||||
@Override
|
||||
protected boolean afterSave (boolean newRecord, boolean success)
|
||||
{
|
||||
if (!success)
|
||||
|
@ -644,6 +646,7 @@ public class MWFNode extends X_AD_WF_Node
|
|||
* @param success success
|
||||
* @return deleted
|
||||
*/
|
||||
@Override
|
||||
protected boolean afterDelete (boolean success)
|
||||
{
|
||||
return success;
|
||||
|
|
|
@ -16,16 +16,15 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.wf;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.MRefList;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WF_NodeNext;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.util.DB;
|
||||
|
||||
/**
|
||||
* Workflow Node Next - Transition
|
||||
|
@ -128,34 +127,12 @@ public class MWFNodeNext extends X_AD_WF_NodeNext
|
|||
if (!requery && m_conditions != null)
|
||||
return m_conditions;
|
||||
//
|
||||
ArrayList<MWFNextCondition> list = new ArrayList<MWFNextCondition>();
|
||||
String sql = "SELECT * FROM AD_WF_NextCondition WHERE AD_WF_NodeNext_ID=? AND IsActive='Y' ORDER BY SeqNo";
|
||||
PreparedStatement pstmt = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, get_TrxName());
|
||||
pstmt.setInt (1, getAD_WF_NodeNext_ID());
|
||||
ResultSet rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add(new MWFNextCondition(getCtx(), rs, get_TrxName()));
|
||||
rs.close ();
|
||||
pstmt.close ();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
try
|
||||
{
|
||||
if (pstmt != null)
|
||||
pstmt.close ();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
pstmt = null;
|
||||
}
|
||||
final String whereClause = MWFNextCondition.COLUMNNAME_AD_WF_NodeNext_ID+"=?";
|
||||
List<MWFNextCondition> list = new Query(getCtx(), MWFNextCondition.Table_Name, whereClause, get_TrxName())
|
||||
.setParameters(new Object[]{getAD_WF_NodeNext_ID()})
|
||||
.setOnlyActiveRecords(true)
|
||||
.setOrderBy(MWFNextCondition.COLUMNNAME_SeqNo)
|
||||
.list();
|
||||
m_conditions = new MWFNextCondition[list.size()];
|
||||
list.toArray (m_conditions);
|
||||
return m_conditions;
|
||||
|
|
|
@ -16,16 +16,13 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.wf;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.MProcessPara;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WF_Node_Para;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -50,43 +47,15 @@ public class MWFNodePara extends X_AD_WF_Node_Para
|
|||
*/
|
||||
public static MWFNodePara[] getParameters (Properties ctx, int AD_WF_Node_ID)
|
||||
{
|
||||
ArrayList<MWFNodePara> list = new ArrayList<MWFNodePara>();
|
||||
String sql = "SELECT * FROM AD_WF_Node_Para "
|
||||
+ "WHERE AD_WF_Node_ID=?";
|
||||
PreparedStatement pstmt = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, null);
|
||||
pstmt.setInt (1, AD_WF_Node_ID);
|
||||
ResultSet rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add(new MWFNodePara (ctx, rs, null));
|
||||
rs.close ();
|
||||
pstmt.close ();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
s_log.log(Level.SEVERE, "getParameters", e);
|
||||
}
|
||||
try
|
||||
{
|
||||
if (pstmt != null)
|
||||
pstmt.close ();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
pstmt = null;
|
||||
}
|
||||
|
||||
List<MWFNodePara> list = new Query(ctx, Table_Name, "AD_WF_Node_ID=?", null)
|
||||
.setParameters(new Object[]{AD_WF_Node_ID})
|
||||
.list();
|
||||
MWFNodePara[] retValue = new MWFNodePara[list.size ()];
|
||||
list.toArray (retValue);
|
||||
return retValue;
|
||||
} // getParameters
|
||||
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MWFNodePara.class);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Standard Constructor
|
||||
|
|
|
@ -16,15 +16,16 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.wf;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.MRole;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WF_Process;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.process.ProcessInfo;
|
||||
|
@ -167,30 +168,17 @@ public class MWFProcess extends X_AD_WF_Process
|
|||
if (!requery && m_activities != null)
|
||||
return m_activities;
|
||||
//
|
||||
ArrayList<MWFActivity> list = new ArrayList<MWFActivity>();
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
String sql = "SELECT * FROM AD_WF_Activity WHERE AD_WF_Process_ID=?";
|
||||
ArrayList<Object> params = new ArrayList<Object>();
|
||||
StringBuffer whereClause = new StringBuffer("AD_WF_Process_ID=?");
|
||||
params.add(getAD_WF_Process_ID());
|
||||
if (onlyActive)
|
||||
sql += " AND Processed='N'";
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, trxName);
|
||||
pstmt.setInt (1, getAD_WF_Process_ID());
|
||||
rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add (new MWFActivity(getCtx(), rs, trxName));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.log(Level.SEVERE, sql, e);
|
||||
whereClause.append(" AND Processed=?");
|
||||
params.add(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DB.close(rs, pstmt);
|
||||
rs = null; pstmt = null;
|
||||
}
|
||||
|
||||
List<MWFActivity> list = new Query(getCtx(), MWFActivity.Table_Name, whereClause.toString(), trxName)
|
||||
.setParameters(params)
|
||||
.list();
|
||||
m_activities = new MWFActivity[list.size ()];
|
||||
list.toArray (m_activities);
|
||||
return m_activities;
|
||||
|
@ -392,7 +380,7 @@ public class MWFProcess extends X_AD_WF_Process
|
|||
*/
|
||||
public void setAD_WF_Responsible_ID ()
|
||||
{
|
||||
int AD_WF_Responsible_ID = DB.getSQLValue(null,
|
||||
int AD_WF_Responsible_ID = DB.getSQLValueEx(null,
|
||||
MRole.getDefault(getCtx(), false).addAccessSQL(
|
||||
"SELECT AD_WF_Responsible_ID FROM AD_WF_Responsible "
|
||||
+ "WHERE ResponsibleType='H' AND COALESCE(AD_User_ID,0)=0 "
|
||||
|
|
|
@ -482,7 +482,7 @@ public class MWorkflow extends X_AD_Workflow
|
|||
}
|
||||
return null;
|
||||
} // getNext
|
||||
|
||||
|
||||
/**
|
||||
* Get (first) Previous Node of ID
|
||||
* @param AD_WF_Node_ID id
|
||||
|
@ -936,7 +936,7 @@ public class MWorkflow extends X_AD_Workflow
|
|||
int AD_Client_ID = Env.getAD_Client_ID(product.getCtx());
|
||||
String sql = "SELECT AD_Workflow_ID FROM AD_Workflow "
|
||||
+" WHERE Value = ? AND AD_Client_ID = ?";
|
||||
return DB.getSQLValue(null, sql, product.getValue(), AD_Client_ID);
|
||||
return DB.getSQLValueEx(null, sql, product.getValue(), AD_Client_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,17 +16,15 @@
|
|||
*****************************************************************************/
|
||||
package org.compiere.wf;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.AdempiereProcessor;
|
||||
import org.compiere.model.AdempiereProcessorLog;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.model.X_AD_WorkflowProcessor;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
|
||||
|
||||
|
@ -52,37 +50,15 @@ public class MWorkflowProcessor extends X_AD_WorkflowProcessor
|
|||
*/
|
||||
public static MWorkflowProcessor[] getActive (Properties ctx)
|
||||
{
|
||||
ArrayList<MWorkflowProcessor> list = new ArrayList<MWorkflowProcessor>();
|
||||
String sql = "SELECT * FROM AD_WorkflowProcessor WHERE IsActive='Y'";
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, null);
|
||||
rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add (new MWorkflowProcessor (ctx, rs, null));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
s_log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DB.close(rs, pstmt);
|
||||
rs = null; pstmt = null;
|
||||
}
|
||||
|
||||
List<MWorkflowProcessor> list = new Query(ctx, Table_Name, null, null)
|
||||
.setOnlyActiveRecords(true)
|
||||
.list();
|
||||
MWorkflowProcessor[] retValue = new MWorkflowProcessor[list.size ()];
|
||||
list.toArray (retValue);
|
||||
return retValue;
|
||||
} // getActive
|
||||
|
||||
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MWorkflowProcessor.class);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Standard Constructor
|
||||
* @param ctx context
|
||||
|
@ -132,31 +108,10 @@ public class MWorkflowProcessor extends X_AD_WorkflowProcessor
|
|||
*/
|
||||
public AdempiereProcessorLog[] getLogs ()
|
||||
{
|
||||
ArrayList<MWorkflowProcessorLog> list = new ArrayList<MWorkflowProcessorLog>();
|
||||
String sql = "SELECT * "
|
||||
+ "FROM AD_WorkflowProcessorLog "
|
||||
+ "WHERE AD_WorkflowProcessor_ID=? "
|
||||
+ "ORDER BY Created DESC";
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement (sql, get_TrxName());
|
||||
pstmt.setInt (1, getAD_WorkflowProcessor_ID());
|
||||
rs = pstmt.executeQuery ();
|
||||
while (rs.next ())
|
||||
list.add (new MWorkflowProcessorLog (getCtx(), rs, get_TrxName()));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DB.close(rs, pstmt);
|
||||
rs = null; pstmt = null;
|
||||
}
|
||||
|
||||
List<MWorkflowProcessorLog> list = new Query(getCtx(), MWorkflowProcessorLog.Table_Name, "AD_WorkflowProcessor_ID=?", get_TrxName())
|
||||
.setParameters(new Object[]{getAD_WorkflowProcessor_ID()})
|
||||
.setOrderBy("Created DESC")
|
||||
.list();
|
||||
MWorkflowProcessorLog[] retValue = new MWorkflowProcessorLog[list.size ()];
|
||||
list.toArray (retValue);
|
||||
return retValue;
|
||||
|
|
|
@ -107,7 +107,7 @@ public class WFProcessManage extends SvrProcess
|
|||
msg += " - " + msg1;
|
||||
}
|
||||
//
|
||||
process.save();
|
||||
process.saveEx();
|
||||
|
||||
return "OK";
|
||||
} // doIt
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms version 2 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, write to the Free Software Foundation, Inc., *
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||
*****************************************************************************/
|
||||
package test.functional;
|
||||
|
||||
import org.compiere.model.MRequisition;
|
||||
import org.compiere.model.Query;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.wf.MWFActivity;
|
||||
import org.compiere.wf.MWFEventAudit;
|
||||
import org.compiere.wf.MWFNode;
|
||||
import org.compiere.wf.MWFNodeNext;
|
||||
import org.compiere.wf.MWFNodePara;
|
||||
import org.compiere.wf.MWFProcess;
|
||||
import org.compiere.wf.MWorkflow;
|
||||
import org.compiere.wf.MWorkflowProcessor;
|
||||
|
||||
import test.AdempiereTestCase;
|
||||
|
||||
/**
|
||||
* Test Workflow related classes
|
||||
* @author Teo Sarca, www.arhipac.ro
|
||||
*/
|
||||
public class WorkflowTest extends AdempiereTestCase
|
||||
{
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception
|
||||
{
|
||||
super.setUp();
|
||||
assertEquals("Client is not GardenWorld", 11, Env.getAD_Client_ID(getCtx()));
|
||||
}
|
||||
|
||||
public void testQuery() throws Exception
|
||||
{
|
||||
//
|
||||
// Check MWFActivity
|
||||
int AD_Table_ID = MRequisition.Table_ID;
|
||||
int Record_ID = 1; // dummy;
|
||||
MWFActivity.get(getCtx(), AD_Table_ID, Record_ID, false);
|
||||
MWFActivity.get(getCtx(), AD_Table_ID, Record_ID, true);
|
||||
//
|
||||
// Check MWFEventAudit
|
||||
int AD_WF_Process_ID = 1; // dummy
|
||||
int AD_WF_Node_ID = 1; // dummy
|
||||
MWFEventAudit.get(getCtx(), AD_WF_Process_ID, AD_WF_Node_ID, getTrxName());
|
||||
MWFEventAudit.get(getCtx(), AD_WF_Process_ID, getTrxName());
|
||||
//
|
||||
// Check MWFProcess
|
||||
MWFProcess proc = new Query(getCtx(), MWFProcess.Table_Name, null, getTrxName())
|
||||
.setClient_ID()
|
||||
.setOrderBy(MWFProcess.COLUMNNAME_AD_WF_Process_ID)
|
||||
.first();
|
||||
if (proc != null)
|
||||
{
|
||||
proc.getActivities(true, false, getTrxName());
|
||||
proc.getActivities(true, true, getTrxName());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: check MWFProcess - need better test
|
||||
}
|
||||
//
|
||||
// Check MWorkflow, MWFNode, MWFNodeNext etc
|
||||
int AD_Client_ID = getAD_Client_ID();
|
||||
int AD_Workflow_ID = 115; // Process_Requisition
|
||||
MWorkflow wf = MWorkflow.get(getCtx(), AD_Workflow_ID);
|
||||
for (MWFNode node : wf.getNodes(false, AD_Client_ID))
|
||||
{
|
||||
MWFNodePara.getParameters(node.getCtx(), node.getAD_WF_Node_ID());
|
||||
|
||||
for (MWFNodeNext next : node.getTransitions(AD_Client_ID))
|
||||
{
|
||||
next.getConditions(true);
|
||||
next.getConditions(false);
|
||||
}
|
||||
}
|
||||
//
|
||||
// Check MWorkflowProcessor
|
||||
for (MWorkflowProcessor processor : MWorkflowProcessor.getActive(getCtx()))
|
||||
{
|
||||
processor.getLogs();
|
||||
}
|
||||
//
|
||||
//
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue