timelimitcontrol.java
来自「公司自己开发的工作流引擎」· Java 代码 · 共 394 行 · 第 1/2 页
JAVA
394 行
WfActInstanceExt actiInstanceExt=new WfActInstanceExt();
actiInstanceExt.setActInstanceId(actiInstanceId);
//设置最长时间(办理时限)
actiInstanceExt.setActMaxTime(maxTime);
//设置办理时限超时时间
actiInstanceExt.setActMaxTimeOut(maxTimeOut);
//设置期望时间(提醒时限)
actiInstanceExt.setActWarningTime(warningTime);
//设置提醒时间超时时间
actiInstanceExt.setActWarningTimeOut(warningTimeOut);
//设置时限单位
actiInstanceExt.setActTimeUnitType(timeUnitType);
//设置已用时间
actiInstanceExt.setActPassTime(passTime);
WfActInstanceExtDAO extDAO=new WfActInstanceExtDAO();
//判断是否已经插入记录
if(extDAO.getWfActInstanceExt(actiInstanceId)!=null){
//更新
extDAO.updateActInstanceExt(actiInstanceExt);
}
else{
//插入
extDAO.insertActInstanceExt(actiInstanceExt);
}
}
/**
* 插入活动实例的办理时限信息
* @param procInstanceId 活动实例id
*/
public void insertActivityInstanceTimeLimitInfo(long actiInstanceId)
throws Exception{
ProcessWorkflowDAO procWfDAO=new ProcessWorkflowDAO();
//取得活动实例信息
WfActiInstance actiInstance=procWfDAO.getWfActiInstanceInfo(actiInstanceId);
if(actiInstance!=null){
TimeUtil timeUtil=new TimeUtil();
WfActInstanceExt actInstanceExt=new WfActInstanceExt();
actInstanceExt.setActInstanceId(actiInstanceId);
//设置最长时间(办理时限)
if(actiInstance.getAtdMaxTime()!=0){
actInstanceExt.setActMaxTime(ConvertWorkitemDatetime.getLocalWorkDatetime(actiInstance.getAtdMaxTime()));
//设置办理时限超时时间,流程设置中的最长时间(办理时限)默认时间单位为"工作日"
actInstanceExt.setActMaxTimeOut(timeUtil.getWorkdayAnticipateDate(
actiInstance.getAtiStartTime(),actiInstance.getAtdMaxTime()));
}
//设置期望时间(提醒时限)
if(actiInstance.getAtdEstimateTime()!=0){
actInstanceExt.setActWarningTime(ConvertWorkitemDatetime.getLocalWorkDatetime(actiInstance.getAtdEstimateTime()));
//设置提醒时间超时时间,活动设置中的期望时间(提醒时限)默认时间单位为"工作日"
actInstanceExt.setActWarningTimeOut(timeUtil.getWorkdayAnticipateDate(
actiInstance.getAtiStartTime(),actiInstance.getAtdEstimateTime()));
}
//设置时限单位
actInstanceExt.setActTimeUnitType(WorkflowConstant.TIMEUNIT_TYPE_WORKDAY);
actInstanceExt.setActPassTime(0);
//插入信息
WfActInstanceExtDAO extDAO=new WfActInstanceExtDAO();
System.out.println("-------debug3");
extDAO.insertActInstanceExt(actInstanceExt);
System.out.println("-------debug5");
}
}
/**
* 更新流程实例完成时的已用时间
* @param workitemId long
*/
public void updateProcessInstancePassTime(long procInstanceId)
throws Exception{
long startTime=System.currentTimeMillis();
ProcessWorkflowDAO procWfDAO=new ProcessWorkflowDAO();
//取得流程实例信息
WfProcInstance procInstance=procWfDAO.getWfProcInstanceInfo(procInstanceId);
WfProcInstanceExtDAO extDAO=new WfProcInstanceExtDAO();
WfProcInstanceExt procInstanceExt=extDAO.getWfProcInstanceExt(
procInstanceId);
if(procInstanceExt!=null){
TimeUtil timeUtil=new TimeUtil();
long passTime=0;
//工作日
if(WorkflowConstant.TIMEUNIT_TYPE_WORKDAY.equals(procInstanceExt.
getProcTimeUnitType())){
passTime=timeUtil.getWorkdayPassTime(procInstance.getPriStartTime(),
procInstance.getPriEndTime());
}
//自然日
else if(WorkflowConstant.TIMEUNIT_TYPE_NATUREDAY.equals(procInstanceExt.
getProcTimeUnitType())){
passTime=timeUtil.getNaturedayPassTime(procInstance.getPriStartTime(),
procInstance.getPriEndTime());
}
procInstanceExt.setProcPassTime(passTime);
extDAO.updateProceInstanceExt(procInstanceExt);
}
logger.info("Execution updateProcessInstancePassTime time: "+(System.currentTimeMillis()-
startTime)+" ms.");
}
/**
* 更新活动实例完成时的已用时间
* @param workitemId long
*/
public void updateActivityInstancePassTime(long actiInstanceId)
throws Exception{
long startTime=System.currentTimeMillis();
ProcessWorkflowDAO procWfDAO=new ProcessWorkflowDAO();
//取得活动实例信息
WfActiInstance actiInstance=procWfDAO.getWfActiInstanceInfo(actiInstanceId);
WfActInstanceExtDAO extDAO=new WfActInstanceExtDAO();
WfActInstanceExt actInstanceExt=extDAO.getWfActInstanceExt(actiInstanceId);
if(actInstanceExt!=null){
TimeUtil timeUtil=new TimeUtil();
long passTime=0;
//工作日
if(WorkflowConstant.TIMEUNIT_TYPE_WORKDAY.equals(actInstanceExt.
getActTimeUnitType())){
passTime=timeUtil.getWorkdayPassTime(actiInstance.getAtiStartTime(),
actiInstance.getAtiEndTime());
}
//自然日
else if(WorkflowConstant.TIMEUNIT_TYPE_NATUREDAY.equals(actInstanceExt.
getActTimeUnitType())){
passTime=timeUtil.getNaturedayPassTime(actiInstance.getAtiStartTime(),
actiInstance.getAtiEndTime());
}
actInstanceExt.setActPassTime(passTime);
extDAO.updateActInstanceExt(actInstanceExt);
}
logger.info("Execution updateActivityInstancePassTime time: "+(System.currentTimeMillis()-
startTime)+" ms.");
}
/**
* 插入活动实例办理期限信息
* @param relList 工作项关联列表,由WfWorkItemRel组成
* @param actParticipator 已选活动设置信息
*/
public void insertTimeLimitInfo(List relList,List actParticipator)
throws Exception{
long startTime=System.currentTimeMillis();
if(relList!=null&&relList.size()>0){
HashMap map=new HashMap();
ProcessWorkflowDAO procWfDAO=new ProcessWorkflowDAO();
for(int i=0;i<relList.size();i++){
WfWorkItemRel rel=(WfWorkItemRel)relList.get(i);
WfActiInstance actiInstance=procWfDAO.getWfActiInstanceInfoByWorkitemId(
rel.getToItemId());
//取得活动实例对应的活动设置信息
Activity act=getActivityInfo(actParticipator,actiInstance.getAtdId());
map.put(Long.toString(actiInstance.getAtiId()),act);
}
Set entry=map.entrySet();
Iterator it=entry.iterator();
while(it.hasNext()){
Entry me=(Entry)it.next();
//有活动实例对应的活动设置信息
if (map.get(me.getKey())!=null){
Activity activity=(Activity)map.get(me.getKey());
//插入办理实现信息
this.updateActivityInstanceTimeLimitInfo(Long.parseLong((String)me.getKey()),activity.getMaxTime(),activity.getTimeUnitType());;
}
//没有活动实例对应的活动设置信息,则插入默认的办理时限信息
else{
this.insertActivityInstanceTimeLimitInfo(Long.parseLong((String)me.getKey()));
}
}
}
logger.info("Execution insertTimeLimitInfo time: "+(System.currentTimeMillis()-
startTime)+" ms.");
}
/**
* 通过Activity列表取得指定活动定义ID的Activity
* @param actParticipator List
* @return Activity
*/
private Activity getActivityInfo(List actParticipator,long atdId){
Activity act=null;
if(actParticipator!=null&&actParticipator.size()>0){
for(int i=0;i<actParticipator.size();i++){
Activity actTemp=(Activity)actParticipator.get(i);
if(actTemp.getActId()==atdId){
act=actTemp;
break;
}
}
}
return act;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?