...
| Code Block |
|---|
import org.joget.apps.app.service.*;
import org.joget.apps.form.dao.*;
import org.joget.apps.form.model.*;
import org.joget.apps.form.service.*;
import org.joget.workflow.model.*;
import org.joget.workflow.model.service.*;
//constant value
String foreignKey = "customProperties.apply_id";
String formDefId = "approveForm";
String tableName = "multiApproval_approvals";
String rowCountVariableName = "approvalCount";
String statusVariableName = "status";
int approvalCount = Integer.parseInt("#variable.approvalCount#");
String approvalIds = "#variable.approvalIds#";
//utility bean
FormDataDao formDataDao = (FormDataDao) AppUtil.getApplicationContext().getBean("formDataDao");
WorkflowManager workflowManager = (WorkflowManager) AppUtil.getApplicationContext().getBean("workflowManager");
AppService appService = (AppService) AppUtil.getApplicationContext().getBean("appService");
//get foreign key
String processId = workflowAssignment.getProcessId();
//build condition
String condition = " WHERE " + foreignKey + " = ?";
Object[] paramsArray = new Object[]{processId};
//get subcontractorapproval data
FormRowSet rows = new FormRowSet();
rows = formDataDao.find(formDefId, tableName, condition, paramsArray, "dateCreated", false, null, null);
int rowCount = 0;
String status = "";
String recordId = "";
for (FormRow r : rows) {
recordId = r.getId();
String recordStatus = r.get("status");
if(recordStatus.equalsIgnoreCase("Rejected")){
status = "Rejected";
break;
}
rowCount++;
}
if(status.equalsIgnoreCase("Rejected")){
workflowManager.processVariable(processId, statusVariableName, "Rejected");
//terminate any remaining approval instances
String[] approvalIdsSplit = approvalIds.split(",");
for(String approvalId : approvalIdsSplit){
if(!approvalId.equalsIgnoreCase("") && !approvalId.equalsIgnoreCase(recordId)){
try{
workflowManager.processAbort(approvalId);
}catch(Exception e){
}
}
}
}else if(rowCount =>= approvalCount){
workflowManager.processVariable(processId, statusVariableName, "Approved");
} |
...