起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20688|回复: 20

[分享] 以印章申请为例说明文件审批中常用的功能与设置

  [复制链接]

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2015-11-30 16:14:38 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 Masion 于 2015-11-30 16:22 编辑

最近用BeX5做了个OA系统 ,在本帖中以印章申请为例说明一下 文件审批的工作流中常用的思路,实际配置与相关函数(记在这里,防止忘记)
主要特色有:
1、工作流的配置不要太长,不要太复杂(否则设计员晕,使用者晕,连计算机也晕),建议环节不要超过5个,分支不要超过2个。
2、工作流建议是在组织机构中由下级向上级流动(不要出现下级流到上级,再流到下级,在流到上级的情况),如果实在避免不了,建议取消下级回退给上级的权限。
3、建议业务表中适当增加一些字段,记录流程相关信息(这些信息在SA_Task)中已经存在。主要的字段有流程发起者的name,ID,deptName,deptID,orgName,OrgID,fName,fID,和reportTime; 流程各个环节实际处理者的name,ID,处理时间和他们在提交后的附言
4、和界面展现和交互相关的代码放在前台,和业务逻辑和库表相关的逻辑尽量放在后台流程、环节、动作相关的事件中
5、打印报表中集成了领导签名图片,条码等相关逻辑6、在业务的库表里添加了流程状态字段(包括 编辑中, 已终止,已结束 三个状态),大家可以根据实际情况酌情增减


评分

参与人数 2威望 +35 收起 理由
zhangql8 + 15
wgs7909 + 20 赞一个!

查看全部评分

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:15:56 | 显示全部楼层
库表结构设计源码 :
  1.   <concept name="JT_Signature" default-value-expr="guid()">
  2.     <has-relation relation="version" default-value-expr="0">
  3.       <label language="zh_CN">版本</label>
  4.     </has-relation>  
  5.     <label language="zh_CN">印章使用申请表</label>  
  6.     <has-relation relation="fNO" data-type="String">
  7.       <label language="zh_CN">单据遍号</label>
  8.     </has-relation>  
  9.     <has-relation relation="fSignatureTypeID" data-type="String"/>  
  10.     <has-relation relation="fSignatureType" data-type="String"/>  
  11.     <has-relation relation="fContent" data-type="String" size="1024"/>  
  12.     <has-relation relation="fSignatureReceiver" data-type="String">
  13.       <label language="zh_CN">主送单位</label>
  14.     </has-relation>  
  15.     <has-relation relation="fSignatureSender" data-type="String" default-value-expr="if(currentDeptName()=null,currentOgnName(),currentDeptName())"/>  
  16.     <has-relation relation="fRemark" data-type="String" size="2048">
  17.       <label language="zh_CN">备注附件</label>
  18.     </has-relation>  
  19.     <has-relation relation="fBizState" data-type="String" default-value-expr="'editing'"/>  
  20.     <has-relation relation="fBizStateName" data-type="String" default-value-expr="'编辑中'">
  21.       <label language="zh_CN">状态</label>
  22.     </has-relation>  
  23.     <has-relation relation="fPrintTime" data-type="DateTime"/>  
  24.     <has-relation relation="fPrintCount" data-type="Integer" default-value-expr="0"/>  
  25.     <has-relation relation="fIndianID" data-type="String"/>  
  26.     <has-relation relation="fIndianName" data-type="String"/>  
  27.     <has-relation relation="fUseDate" data-type="DateTime"/>  
  28.     <has-relation relation="fApplyOrgID" data-type="String" default-value-expr="currentOgnID()"/>  
  29.     <has-relation relation="fApplyOrgName" data-type="String" default-value-expr="currentOgnName()"/>  
  30.     <has-relation relation="fApplyPsnID" data-type="String" default-value-expr="operatorID()"/>  
  31.     <has-relation relation="fApplyPsnName" data-type="String" default-value-expr="currentPersonMemberNameWithAgent()"/>  
  32.     <has-relation relation="fApplyDeptID" data-type="String" default-value-expr="if(currentDeptID() = null, currentOgnID(), currentDeptID())"/>  
  33.     <has-relation relation="fApplyDeptName" data-type="String" default-value-expr="if(currentDeptName()=null,currentOgnName(),currentDeptName())"/>  
  34.     <has-relation relation="fApplyPsnFullID" data-type="String" default-value-expr="currentPersonMemberFID()"
  35.       size="512"/>  
  36.     <has-relation relation="fApplyPsnFullName" data-type="String" default-value-expr="currentPersonMemberFNameWithAgent()"
  37.       size="512"/>  
  38.     <has-relation relation="fApplyDate" data-type="DateTime" default-value-expr="currentDateTime()"/>  
  39.     <has-relation relation="fAuditorID" data-type="String"/>  
  40.     <has-relation relation="fAuditor"/>  
  41.     <has-relation relation="fAuditorAdvice" data-type="String"/>  
  42.     <has-relation relation="fAuditDate" data-type="DateTime"/>  
  43.     <has-relation relation="fBizAuditor" data-type="String"/>  
  44.     <has-relation relation="fBizAuditorID" data-type="String"/>  
  45.     <has-relation relation="fBizAuditorAdvice" data-type="String"/>  
  46.     <has-relation relation="fBizAuditorDate" data-type="DateTime"/>  
  47.     <has-relation relation="fApprover" data-type="String"/>  
  48.     <has-relation relation="fApproverID" data-type="String"/>  
  49.     <has-relation relation="fApproveDate" data-type="DateTime"/>  
  50.     <has-relation relation="fApproverAdvice" data-type="String"/>  
  51.     <has-relation relation="fBizAuditRequired" data-type="String" default-value-expr="'否'"/>
  52.   </concept>  
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:18:02 | 显示全部楼层
在这里,我把发起人员的相关信息都用了默认值 捕获.PNG

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:20:35 | 显示全部楼层
在流程环节,设置了 单据编码 在保存时生成,保证生成的单据编号都是连续的
该函数放在主数据 的保存动作前
  1.         public static void signatureProcessBeforeSaveJT_SignatureAction() {
  2.                         //保存前,设置单据编号为连续编号
  3.                        
  4.                         //获得table参数
  5.                         Table table=(Table)ContextHelper.getActionContext().getParameter("table");
  6.                         //获得所有新增的行
  7.                         Iterator<Row> rows=table.iterator(com.justep.system.data.ModifyState.NEW);
  8.                         SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMdd");
  9.              String date = sDateFormat.format(new java.util.Date());      
  10.                 while (rows.hasNext()){
  11.                        Row row = rows.next();  
  12.                         String a=BizUtils.createNextSequenceString("YZSQ"+date,"00000");   
  13.                         row.setValue("fNO",a); //给列赋值
  14.                 }
  15.         }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:43:25 | 显示全部楼层
每个环节结束时,都在业务表上添加本环节处理人员的信息(包括ID,name,处理时间,和附言)
  1.         public static void indianBizAuditBeforeAdvance() {
  2.                                        
  3.                                 //业务审核流转前,将审核人,审核时间填写上
  4.                 try{
  5.                         String key=com.justep.system.process.ProcessUtils.getProcessData1();
  6.                         String kSql="update JT_Signature JT_Signature set JT_Signature.fBizAuditor='"+ContextHelper.getOperator().getName()+"', JT_Signature.fBizAuditorID='"+ContextHelper.getOperator().getID()+"', "+
  7.                                                 "JT_Signature.fBizAuditorDate=  :currentDateTime()  "+
  8.                                                 "where JT_Signature='"+key+"'";
  9.                         System.out.println(kSql);
  10.                         KSQL.executeUpdate(kSql, null, "/JTNS/JTOA/data", null);
  11.                        
  12.                 }catch(Exception e){
  13.                         throw new RuntimeException (e.getMessage());
  14.                 }       
  15.         }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:43:46 | 显示全部楼层
  1.         public static void indianAuditAfterAdvance() {
  2.                         //审核流转之后,将用户填写的流程附言放到数据表中
  3.                 try{
  4.                         String taskID=ProcessUtils.getProcessContext().getTask().getId();
  5.                         String ksql="select sContent as sContent from SA_Task SA_Task where SA_Task='"+taskID+"'";
  6.                         com.justep.system.data.Table table= KSQL.select(ksql, null, "/system/data", null);
  7.                         Iterator<Row> rows=table.iterator();
  8.                         Row row;
  9.                         row=rows.next();
  10.                         String str=row.getString("sContent");
  11.                         //System.out.println(str);
  12.                         if(str!=null  ){
  13.                         String key=com.justep.system.process.ProcessUtils.getProcessData1();
  14.                         String kSql1="update JT_Signature JT_Signature set JT_Signature.fAuditorAdvice='"+str+"' "+
  15.                                                 "where JT_Signature='"+key+"'";
  16.                         KSQL.executeUpdate(kSql1, null, "/JTNS/JTOA/data", null);
  17.                         }
  18.                 }catch(Exception e){
  19.                         throw new RuntimeException (e.getMessage());
  20.                 }
  21.         }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:45:19 | 显示全部楼层
在流程结束和流程终止的事件中添加修改流程状态的代码
  1.         public static void signatureProcessBeforeAbort() {
  2.                         //流程终止时,将流程状态设置为“已终止”
  3.                 try{
  4.                         String key=com.justep.system.process.ProcessUtils.getProcessData1();
  5.                         String kSql="update JT_Signature JT_Signature set JT_Signature.fBizState='aborted', JT_Signature.fBizStateName='已终止' "+
  6.                                                 "where JT_Signature='"+key+"'";
  7.                         KSQL.executeUpdate(kSql, null, "/JTNS/JTOA/data", null);
  8.                        
  9.                 }catch(Exception e){
  10.                         throw new RuntimeException (e.getMessage());
  11.                 }
  12.         }


  13.         public static void signatureProcessBeforeFinish() {
  14.                                 //流程结束时,将流程状态设置为“已结束”
  15.                 try{
  16.                         String key=com.justep.system.process.ProcessUtils.getProcessData1();
  17.                         String kSql="update JT_Signature JT_Signature set JT_Signature.fBizState='finished', JT_Signature.fBizStateName='已结束' "+
  18.                                                 "where JT_Signature='"+key+"'";
  19.                         KSQL.executeUpdate(kSql, null, "/JTNS/JTOA/data", null);
  20.                        
  21.                 }catch(Exception e){
  22.                         throw new RuntimeException (e.getMessage());
  23.                 }
  24.         }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:47:41 | 显示全部楼层
UI上的布局较为简单,直接上源码附件 :

signature.zip

374.87 KB, 下载次数: 576

signatureQuery.zip

159.17 KB, 下载次数: 711

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:50:32 | 显示全部楼层
本帖最后由 Masion 于 2015-12-1 09:29 编辑

最后贴出一个打印出来的报表效果:

165026b3vyez77rvb7ebre.png
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-11-30 16:52:10 | 显示全部楼层
算了 ,把process文件的附件也传上来

signature.zip

6.99 KB, 下载次数: 536

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 07:55 , Processed in 0.078731 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表