首先我们假定一个封闭报销的流程: 报销人进行基本信息的登记---->部门领导进行审批---->分管领导进行审批---->财务总监进行审批---->进行金额判断---->金额小于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实现报销流程相关推荐

  1. 使用O2OA二次开发搭建企业办公平台(十五)流程开发篇:创建报销审批流程

    本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...

  2. Java开源协同办公开发平台:报销申请如何使用

    企业中的财务管理,可以说是企业的经济命脉,但是日常管理中的采购申请.差旅报销等等费用报销的审批非常繁多琐碎,许多的企业都选择了使用OA系统来实现财务规范化的管理. O2OA报销申请是使用平台能力自定义 ...

  3. 【ZUFE-经费报销】浙江财经大学发票报销经验分享(以新苗报销为例)

    目录 新苗经费报销 发票抬头 报销材料 主要类型 (一)差旅票 (二)交通发票 (三)办公用品发票 (四)通信发票(开票日期在2021.09.13后的不能再报销) 截至目前,个人报销成功过4次新苗,第 ...

  4. 报销软件兴起,结束手工报销时代

    报销软件兴起,结束手工报销时代 在我们的日常工作中离不开费用报销,如商务旅行.培训.招待等等,在没有云报销软件之前,差不多每一名工作人员都经历过繁琐的报销流程.然而,在报销业务的过程中,找领导签署到财 ...

  5. 道一云与畅捷通T+对接集成获取报销信息列表连通凭证创建(报销交通费(青海))

    道一云与畅捷通T+对接集成获取报销信息列表连通凭证创建(报销交通费(青海)) 接通系统:道一云 在道一云坚实的技术基础上,道一云推出全新升级的2.0产品矩阵,分别是低码平台.智能门户.场景应用.基于云 ...

  6. Java生鲜电商平台-电商支付流程架构实战

    Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...

  7. Jvm处理Java Thread 的run方法中抛出异常的流程

    Jvm处理Java Thread 的run方法中抛出异常的流程 参考文章: (1)Jvm处理Java Thread 的run方法中抛出异常的流程 (2)https://www.cnblogs.com/ ...

  8. Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程

    工作流模块----------------------------------------------------------------------------------------------- ...

  9. java花开程序_java代码的运行流程

    1. 运行流程的概览图 2.  具体流程 2.1 java源文件编译为class字节码 java代码是运行在Java虚拟机上的.但是java是一门面向对象的高级语言,它不仅语法非常复杂,抽象程度也非常 ...

  10. java开发 审核流程思路_java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】...

    转: 在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提供我的设计思路,知道了思路,实现起来就简单很多了. ...

最新文章

  1. Pandas 数据类型概述与转换实战
  2. MVC控件类型-HtmlHelper类
  3. UVa 412 - Pi
  4. mac中打开nginx位置
  5. LVM逻辑卷管理命令
  6. pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)
  7. Search in Rotated Sorted Array II
  8. TypeScript + Gulp + 混淆 + 打包
  9. 怎样让AI完成人类搞不定的任务?OpenAI提出迭代扩增法给AI设目标
  10. Linux内核模块(一)
  11. Axure RP 9.0.0.3687 正式版
  12. 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
  13. stm32 hal 模拟i2c
  14. MySQL中的自增主键用完了怎么办?
  15. 紫光扫描仪ocr_清华紫光扫描仪的安装教程及使用方法
  16. 信托公司的“大数据”战略思维
  17. 浅谈跨站脚本攻击与防御
  18. 从隔壁兄弟那爬点网页数据,整理成word文档
  19. http之短链接原理分析
  20. 基因数据处理52之cs-bwamem集群版运行(1千万条100bp的reads)

热门文章

  1. rec删除xposed_Xposed框架对应各系统版本的下载与卸载
  2. 基于javaEE的网上商城购物系统
  3. 是否忘记了向源中添加 stdafx.h
  4. oppor829t如何刷机_OPPO R829T卡刷刷机图文教程
  5. idea格式化代码失效
  6. Java 经纬度转UTM投影
  7. 三星固态驱动安装失败_三星固态硬盘安装不了Win10无法启动解决方案
  8. 什么是OTDR测试仪?什么又是福禄克测试?
  9. php如何解决高并发问题
  10. python通过身份证或出生日期获取年龄