工作流脚本

前言

  金蝶协同OA工作流。主要用于流程的发起审批的流程。这其中,有时候会需要在工作流中添加脚本:设置外部变量,然后通过脚本查询表中数据,然后将结果输出。

接下来呢,提供几个简单的demo例子进行参考。

 

取某个(本例是办理部门部长)审批节点的的审批决策项(0(不同意) 1(同意) ):

  spr 就是设定的外部数组变量,通过脚本将需要的数据,赋值到spr中。

1 StringBuffer tStrSql2 = new StringBuffer();  
2 tStrSql2.append(" SELECT fhandleroption  FROM T_BAS_MultiApprove where FASSIGNMENTID in ( select fassignid  from T_WFR_Assigndetail  where  factdefname_l2='办理部门部长'and fbizobjid= '"+billID+"' )");
3 com.kingdee.jdbc.rowset.IRowSet tStrSqlRs2= com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,tStrSql2.toString());
4 ArrayList al2 = new ArrayList(); 
5 java . util . ArrayList list2 = new java . util . ArrayList ( ) ; 
6 while ( tStrSqlRs2 . next ( ) ) { list2 . add ( tStrSqlRs2. getString ( "fhandleroption" ) . toString ( ) ) ; } 
7 spr= new String [ list2 . size ( ) ] ;
8  for ( int i = 0 ; i < list2 . size ; i ++ ) {spr[ i ] = list2 . get ( i ) . toString ( ) ; }

取分录组织负责人:

 1 1.定义一个内码型变量id,两个外部类型变量posarray、userarray。
 2 2.在提交节点将单据id输到变量id.
 3 3.提交节点的后置脚本放以下脚本
 4 4.审批节点参与人设置为变量userarray
 5 java . lang . StringBuffer sql1 = new java . lang . StringBuffer ( ) ; 
 6 sql1 . append ( "select distinct  FCostCenterId from T_BC_BizAccountBillentry where FBillID ='"+id+"'") ; 
 7 com.kingdee.jdbc.rowset.IRowSet rst= com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sql1.toString());
 8  java . util . ArrayList list1 = new java . util . ArrayList ( ) ; 
 9 while ( rst . next ( ) ) { list1 . add ( rst . getString ( "FCostCenterId" ) . toString ( ) ) ; } 
10 posarray = new String [ list1 . size ( ) ] ;
11  userarray = new String [ list1 . size ( ) ] ;
12  for ( int i = 0 ; i < list1 . size ; i ++ ) { posarray [ i ] = list1 . get ( i ) . toString ( ) ; 
13 
14 java . lang . StringBuffer sql2 = new java . lang . StringBuffer ( ) ; 
15 sql2 . append ( "select FID from T_PM_USER where Fpersonid in(select Fpersonid from  T_ORG_PositionMember  where fpositionid in ( select FID from T_ORG_Position where FIsRespPosition = '1' and FAdminOrgUnitID = '" + posarray [ i ] + "'))" ) ; 
16 com.kingdee.jdbc.rowset.IRowSet row= com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sql2.toString());
17 while ( row . next ( ) ) { FYCDBM_FZR_ID= row . getString ( "FID" ) ; } 
18 if ( null == FYCDBM_FZR_ID|| "" . equals ( FYCDBM_FZR_ID) )
19  return null ; 
20 userarray [ i ] = FYCDBM_FZR_ID ; }
21 return userarray;

反写单据:

 1 以反写费用报销单的事由为例子
 2 
 3 1.定义一个内码型变量billid 一个字符串变量fsy fsy在后置脚本随便赋值
 4 2.在提交节点输出单据id到变量billid
 5 3.在脚本节点或后置脚本放以下脚本。
 6 
 7 
 8 StringBuffer tStrSql = new StringBuffer();  
 9 tStrSql.append(" update T_BC_BizAccountBill set  fcause ='"+fsy+"'");
10 tStrSql.append(" where Fid = '"+billid+"' ");
11 com.kingdee.jdbc.rowset.IRowSet rowSet = com.kingdee.eas.util.app.DbUtil.execute(__bosContext,tStrSql.toString());

 

更新日期:

StringBuffer sb = new StringBuffer();
sb.append("select r.fname_l2 as name from T_HR_ResignBizBillEntry t left join T_HR_AffairActionReason r on t.faffairactreasonid = r.fid where fpersonid = '" + fpersonid + "'");
com.kingdee.jdbc.rowset.IRowSet res= com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sb.toString());
String operation = null;
while(res.next()){
    operation = res.getString("name");
}
if(operation != null && "自辞".equals(operation)){
    sb.setLength(0);
    Date current = new Date();
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date  = sdf.format(current);
    sb.append("UPDATE T_HR_ResignBizBillEntry SET fbizdate = {ts'"+ date +"'} WHERE  fpersonid = '" + fpersonid + "'");
    com.kingdee.jdbc.rowset.IRowSet rowSet = com.kingdee.eas.util.app.DbUtil.execute(__bosContext,sb.toString());
}

 

 

 

常用表及表结构

T_WFR_Assign (工作流任务)

  表结构:

  

 T_BAS_DocumentInfo(流程信息)

  表结构:

  

 

T_WFR_AssignDetail(处理过的工作流任务 (审批))

  表结构:

  

 

T_BAS_MultiApprove(多级审批表)

  表结构:

  

 

posted @ 2017-09-11 12:16  蚂蚁分享圈  阅读(1043)  评论(0编辑  收藏  举报