工作流实配置实例.docx
《工作流实配置实例.docx》由会员分享,可在线阅读,更多相关《工作流实配置实例.docx(11页珍藏版)》请在冰豆网上搜索。
工作流实配置实例
工作流实例
业务背景:
门店制作向实业公司的采购订单,实业公司审核采购订单,审核后自动生成实业公司对门店的销售出库单。
门店做在途库存确认工作,将已审核的采购订单和已提交的调拨单进行相关业务处理。
其他补充:
获取时间的例子
Strings=vnumber.substring(vnumber.length()-1,vnumber.length());
vtime=Integer.parseInt(s);
java.util.Calendarc=java.util.Calendar.getInstance();
c.add(c.MINUTE,vtime*10+1);
vyear=c.get(java.util.Calendar.YEAR);
vmonth=c.get(java.util.Calendar.MONTH)+1;
vday=c.get(java.util.Calendar.DATE);
vhour=c.get(java.util.Calendar.HOUR_OF_DAY);
vmin=c.get(java.util.Calendar.MINUTE);
vsec=c.get(java.util.Calendar.SECOND);
判断是否已进行转单的工作流脚本例子:
StringBuffersql=newStringBuffer();
sql.append("selectcount
(1)asqtyfromt_bot_relationwherefsrcobjectid='").append(ShopAllocation.id.toString()).append("'");
com.kingdee.eas.rc.IDailySettleBilliDailySettleBill=
com.kingdee.eas.rc.DailySettleBillFactory.getLocalInstance(__bosContext);
com.kingdee.jdbc.rowset.IRowSetidRowSet=iDailySettleBill.getRowSet(sql.toString());
intqty=0;
while(idRowSet!
=null&&idRowSet.next()){
qty=idRowSet.getInt("qty");
}
isTransfered=qty>0?
true:
false;
优化后的流程:
新工作流等待时间改善算法:
1.增加临时表存储下一条流程触发启动的时间变量t22.增加存储两条流程启动时间间隔的工作流变量t03.等待时间计算逻辑:
获取当前时间t1获取临时表时间t2t1>=t2时,t=t1,否则,t=t2设置等待时间为t更新t2=t+t0
工作流程图:
节点说明
流程变量:
提交:
条件判断:
Stringsql="";
java.sql.Statementstatement=null;
sql="selectt2fromt_wfr_var";
java.sql.Connectioncon=com.kingdee.bos.framework.ejb.EJBFactory.getConnection(__bosContext);
statement=con.createStatement();
java.sql.ResultSetrs=statement.executeQuery(sql);
while(rs.next()){
t2=rs.getTimestamp("t2");
}
java.util.Calendarc=java.util.Calendar.getInstance();
t1=c.getTime();
t=t1.after(t2)?
t1:
t2;
c.setTime(t);
c.add(c.SECOND,10);
vyear=c.get(java.util.Calendar.YEAR);
vmonth=c.get(java.util.Calendar.MONTH)+1;
vday=c.get(java.util.Calendar.DATE);
vhour=c.get(java.util.Calendar.HOUR_OF_DAY);
vmin=c.get(java.util.Calendar.MINUTE);
vsec=c.get(java.util.Calendar.SECOND);
c.add(c.SECOND,t0);
t2=c.getTime();
java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
Stringst2=sdf.format(t2);
sql="/*dialect*/updatet_wfr_varsett2=to_date('"+st2+"','yyyy-mm-ddhh24:
mi:
ss')";
intct=statement.executeUpdate(sql);
com.kingdee.util.db.SQLUtils.cleanup(statement,con);
等待:
自动审核:
获取采购订单内码集合:
java.lang.StringBuffersql=newStringBuffer();sql.append("SELECTDISTINCTCFBillIDFROMCT_RC_DailySettleBillEntry1WHEREFParentID='");sql.append(DailySettleBill.id+"'");com.kingdee.eas.rc.IDailySettleBilliDailySettleBill=com.kingdee.eas.rc.DailySettleBillFactory.getLocalInstance(__bosContext);com.kingdee.jdbc.rowset.IRowSetidRowSet=iDailySettleBill.getRowSet(sql.toString());while(idRowSet.next()){SrcBillIDs[i]=com.kingdee.bos.util.BOSUuid.read(idRowSet.getString("CFBillID"));i++;}Count=i;
启动采购订单BOTP:
if(Loop<=Count){
SrcBillID=SrcBillIDs[Loop];
}
Loop++;
进行推单条件:
单据转换采购订单转采购入库单:
采购入库单提交:
结束循环条件,结束采购订单推采购入库单
获取调拔单内码集合:
Count=0;Loop=0;i=0;java.lang.StringBuffersql=newStringBuffer();sql.append("SELECTDISTINCTCFBillID,CFfromShopIDFROMCT_RC_DailySettleBillEntry2WHEREFParentID='");sql.append(DailySettleBill.id+"'");com.kingdee.eas.rc.IDailySettleBilliDailySettleBill=com.kingdee.eas.rc.DailySettleBillFactory.getLocalInstance(__bosContext);com.kingdee.jdbc.rowset.IRowSetidRowSet=iDailySettleBill.getRowSet(sql.toString());while(idRowSet.next()){SrcBillIDs[i]=com.kingdee.bos.util.BOSUuid.read(idRowSet.getString("CFBillID"));fromShopIDs[i]=com.kingdee.bos.util.BOSUuid.read(idRowSet.getString("CFfromShopID"));i++;}Count=i;
启动门店调拨单BOTP循环:
if(Loop<=Count){
SrcBillID=SrcBillIDs[Loop];
fromShopID=fromShopIDs[Loop];
}
Loop++;
BOTP门店调拨单转采购入库单的条件
单据转换门店调拨单转采购入库单:
采购入库单提交:
结束循环:
流程结束