java报销流程的实现_Filenet实现报销流程
首先我们假定一个封闭报销的流程: 报销人进行基本信息的登记---->部门领导进行审批---->分管领导进行审批---->财务总监进行审批---->进行金额判断---->金额小于1000的直接交由出纳;金额大于等于1000交到总经理那进行审批再交到出纳这里.
1. 报销单登记,录入报销的基本信息,界面【附件1】。上传报销单、发票到CE中。审批过程中上述两个材料是审批的依据。只有上传报销单、发票后才能提交审批
2. CE中的附件的目录结构:【年度】à【月份】à【报销单】、【发票】。“年度”目录下是“月份”目录,“月份”目录下面有两个目录是“报销单”、“发票”目录。
3. 报销单document class 属性:日期,报销人,合计,备注
4. 发票 document class 金额,日期,发票号码,发票代码,单位
5. 建立一个搜索模版:输入报销人,金额,日期等条件,查处所有的报销单。
6. 程序要求:基本信息登记要求用jsp,jsf或者flex等技术实现【附件1】的界面。【自己选择】
【上传报销单】按钮:调用CE、PE等api实现上传附件到【报销单】目录下。
【上传发票】按钮:同上,上传附件到【发票】目录下。
【登记完成】按钮:报销单、发票等材料附件到流程中。启动流程到下一步。
领导审批:所有的页面用eform实现。
有了上面的需求我们开始工作:
创建好所需的document class进入workplace设计流程,这个流程很简单,设计eform,为本流程新增一个表单策略,这些都在workplace下完成,比较简单,我在这里就不再详细说了,主要说下j2EE对流程操作的实现
(在此声明:本人也是刚开始学习fileNet,有说错地方还请各位多多包含,给予指正,只是现在在对于fileNet的资料国内实在是少,写给一些初学者,希望能对大家有所帮助。)
开发环境为:JSF+Tomcat 6.0
首先搭建工程,引入必要的包,配置PE,CE连接,配置文件:
点击下载此文件
解压后只要稍做修改就可以使用了.
创建包view和service,view用来放与页面交互的managedBean,在view里我们创建一个一厂类Credential用来管理我们要使用的CE,PE连接,如下:
package service;
import com.filenet.api.core.Connection;
import filenet.vw.api.VWSession;
public class Credential {
private VWSession vwSession;
private Connection connection;
public Credential(VWSession vwSession, Connection connection)
{
this.vwSession = vwSession;
this.connection = connection;
}
public VWSession getVWSession()
{
return vwSession;
}
public Connection getConnection()
{
return connection;
}
}
在view里创建FileNetManagedBean,好,准备工作做完,我们来实现fileNet的登录,代码如下:
登录页
用户名:
密码:
在我们的Bean里创建方法login public String login(){
Connection conn = this.logonCE(this.CONFIG_BUNDLE);
VWSession session;
try {
session = this.logonPE(this.CONFIG_BUNDLE);
this.credential = new Credential(session,conn);
return "suc";
} catch (VWException e) {
e.printStackTrace();
return "";
}
}
其中的CONFIG_BUNDLE为一个静态常量
//登录PE的所有配置文件
private static final String CONFIG_BUNDLE = "config/pe/pelogin";
需要用到的方法如下:
/**
* Logon PE and return a connected VWSession
*
* @return VWSession
* @throws VWException
*
*/
private VWSession logonPE(String url) throws VWException {
ResourceBundle configBundle = ResourceBundle
.getBundle(url);
// Setup parameters of JVM
setJVMParametersForPE(configBundle);
// get PE login configuration parameters from configuration file
String connectionPointName = configBundle
.getString("ConnectionPointName");
// Login to Process Engine
VWSession vwSession = new VWSession(this.userName, this.password,
connectionPointName);
return vwSession;
}
private Connection logonCE(String url)
{
ResourceBundle configBundle = ResourceBundle
.getBundle(url);
// Setup parameters of JVM
setJVMParametersForPE(configBundle);
// get PE login configuration parameters from configuration file
String ce_uri = configBundle.getString("ContentEngineURL");
Connection conn = Factory.Connection.getConnection(ce_uri);
Subject s = UserContext.createSubject(conn, this.userName, this.password, null);
UserContext uc = UserContext.get();
uc.pushSubject(s);
// uc.popSubject()
return conn;
}
/**
* Set JVM Parameters used to connect PE
*
* @param resourceBundle
* The resource file which contains the values of
* parameters
*/
private static void setJVMParametersForPE(
ResourceBundle resourceBundle) {
// Set WASP location
String waspLocation = resourceBundle.getString("WASP_Location");
System.out.println("***************************");
System.out.println("waspLocation = " + waspLocation);
if (null != waspLocation && !waspLocation.equals("")) {
URL waspLocationURL = FileNetManagedBean.class
.getResource(waspLocation);
String waspLocationPath = waspLocationURL.getPath();
System.setProperty("wasp.location", waspLocationPath);
}
// Set jaas configuration parameter
String jaasConfigFile = resourceBundle
.getString("JAAS_ConfigFile");
System.out.println("***************************");
System.out.println("jaasConfigFile = " + jaasConfigFile);
if (null != jaasConfigFile && !jaasConfigFile.equals("")) {
URL jaasConfigURL = FileNetManagedBean.class
.getResource(jaasConfigFile);
String jaasConfigFilePath = jaasConfigURL.getPath();
System.setProperty("java.security.auth.login.config",
jaasConfigFilePath);
}
// set the CE_URL for authentication
String ceURL = resourceBundle.getString("ContentEngineURL");
System.out.println("***************************");
System.out.println("ceURL = " + ceURL);
System.setProperty("filenet.pe.bootstrap.ceuri", ceURL);
}
登录成功跳转到报销登记页面.登记实现将在下篇介绍.
java报销流程的实现_Filenet实现报销流程相关推荐
- 使用O2OA二次开发搭建企业办公平台(十五)流程开发篇:创建报销审批流程
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
- Java开源协同办公开发平台:报销申请如何使用
企业中的财务管理,可以说是企业的经济命脉,但是日常管理中的采购申请.差旅报销等等费用报销的审批非常繁多琐碎,许多的企业都选择了使用OA系统来实现财务规范化的管理. O2OA报销申请是使用平台能力自定义 ...
- 【ZUFE-经费报销】浙江财经大学发票报销经验分享(以新苗报销为例)
目录 新苗经费报销 发票抬头 报销材料 主要类型 (一)差旅票 (二)交通发票 (三)办公用品发票 (四)通信发票(开票日期在2021.09.13后的不能再报销) 截至目前,个人报销成功过4次新苗,第 ...
- 报销软件兴起,结束手工报销时代
报销软件兴起,结束手工报销时代 在我们的日常工作中离不开费用报销,如商务旅行.培训.招待等等,在没有云报销软件之前,差不多每一名工作人员都经历过繁琐的报销流程.然而,在报销业务的过程中,找领导签署到财 ...
- 道一云与畅捷通T+对接集成获取报销信息列表连通凭证创建(报销交通费(青海))
道一云与畅捷通T+对接集成获取报销信息列表连通凭证创建(报销交通费(青海)) 接通系统:道一云 在道一云坚实的技术基础上,道一云推出全新升级的2.0产品矩阵,分别是低码平台.智能门户.场景应用.基于云 ...
- Java生鲜电商平台-电商支付流程架构实战
Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...
- Jvm处理Java Thread 的run方法中抛出异常的流程
Jvm处理Java Thread 的run方法中抛出异常的流程 参考文章: (1)Jvm处理Java Thread 的run方法中抛出异常的流程 (2)https://www.cnblogs.com/ ...
- Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程
工作流模块----------------------------------------------------------------------------------------------- ...
- java花开程序_java代码的运行流程
1. 运行流程的概览图 2. 具体流程 2.1 java源文件编译为class字节码 java代码是运行在Java虚拟机上的.但是java是一门面向对象的高级语言,它不仅语法非常复杂,抽象程度也非常 ...
- java开发 审核流程思路_java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】...
转: 在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提供我的设计思路,知道了思路,实现起来就简单很多了. ...
最新文章
- Pandas 数据类型概述与转换实战
- MVC控件类型-HtmlHelper类
- UVa 412 - Pi
- mac中打开nginx位置
- LVM逻辑卷管理命令
- pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)
- Search in Rotated Sorted Array II
- TypeScript + Gulp + 混淆 + 打包
- 怎样让AI完成人类搞不定的任务?OpenAI提出迭代扩增法给AI设目标
- Linux内核模块(一)
- Axure RP 9.0.0.3687 正式版
- 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
- stm32 hal 模拟i2c
- MySQL中的自增主键用完了怎么办?
- 紫光扫描仪ocr_清华紫光扫描仪的安装教程及使用方法
- 信托公司的“大数据”战略思维
- 浅谈跨站脚本攻击与防御
- 从隔壁兄弟那爬点网页数据,整理成word文档
- http之短链接原理分析
- 基因数据处理52之cs-bwamem集群版运行(1千万条100bp的reads)