传智播客--OA项目的审批流转模块实现

传智播客OA系统源代码分析与实践 本文还有配套的精品资源,点击获取 简介:开源的办公自动化系统OA源码由传智播客提供,为Java学习者提供了深入了解实际项目的机会。源码经过调试和优化,支持在Windows和Linux环境下安装,并包含完整的项目结构和配置文件,便于学习者理解和实践Java Web开发。 1. 传智播客开源OA系统概述 系统简介 传智播客开源OA系统是一套为企业办公自动化... 阅读详情

今天开始写OA项目的审批流转模块(工作流)了.最近的写的模块比较多,晚上抓紧时间努力的练习也是有点赶不上老师的进度.有点郁闷了.呵呵.最近思考一 下,怎么能调整一下节奏呢.跟上老师的进度.

这个模块分了三个小模块逐步实现模块功能,分别是流程与表单管理/执行流程/查询

复习一下JBPM,工作流动包括:部署,启动,查询,执行(开始,结束),Signal

1.流程定义
ProcessDefinition pd = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");
        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); // 创建Session,开始事务
        try {
        
            jbpmContext.deployProcessDefinition(pd);
        } catch (RuntimeException e) {
            jbpmContext.setRollbackOnly();
            throw e;
        } finally {
            jbpmContext.close(); // 提交/回滚 事务,关闭Session
        }

2.对于这个模块的要求
1)方便的 定义/修改 与 管理 流程
2)方便的 定义/修改 与 管理 表单模板
3)执行审批流转(让表单(数据)按指定的流程进行流转,并且记录)
4)方便的查询所有的 表单实例 记录(查询流转过的表单)

3.分页
先设计一个对象,其中包括这些属性.
//是直接传给对象的
private int currentPage; // 当前页
private int pageSize; // 页面大小(每页显示的数量)
// 查询数据库得来的
private int recordCount; // 总记录数
private List recordList; // 本页的数据列表
// 通过自己计算就能得来
private int totalPage; // 总页码
private int startPageIndex; // 页码列表的开始索引
private int endPageIndex; // 页码列表的结束索引

4.总页数的计算.
分页在实现类中的数据准备过程要注意的事项
总数量对数据库的查询,用到了number
1)FROM 后跟的是 entity-name
2)entity-name是<class>的属性。默认为类的全限定名
3)在<hibernate-mapping>有auto-import属性,配置在HQL中是否可以使用简单名称。
   默认为true。什么时候用false?
   在有多个类是同一个简单名称时,只能有一个为true。
    
其中需要查询数据库的操作实现

int count = ((Number) getSession().createQuery(//
        "SELECT COUNT(pd) FROM org.jbpm.graph.def.ProcessDefinition pd")//
        .uniqueResult())//
        .intValue();

int firstResult = PageView.calcFirstResult(pageNum, pageSize);
List list = getSession().createQuery(//
        "FROM org.jbpm.graph.def.ProcessDefinition pd")//
        .setFirstResult(firstResult)//
        .setMaxResults(pageSize)//
        .list();
在Action类中,直接向页面返回这个对象就行了.

5.审批流程管理
在实现一个功能之前,要先分析需求,再分析出需要的实体,最后才能编码实现.
不要一上来就急着编码,这样很难成功实现.

流程定义在JBPM中是 ProcessDefinition
JBPM所有的实体都要用它自己的API来操作.我们不能用自己的Session来操作JBPM.

部署新的审批流程:
这里我们用struts的直接上传流程的.zip文件.

6.struts的文件上传
1)HTML
<html:form action="/pd" onsubmit="return checkForm(this)" enctype="multipart/form-data">

<html:file property="parResource"/>
在HTML中,别忘了声明enctype="multipart/form-data"
2)ActionForm
ProcessDefinitionActionForm actionForm = (ProcessDefinitionActionForm) form;

        try {
            ZipInputStream zipInputStream = new ZipInputStream(actionForm.getParResource().getInputStream());
            ProcessDefinition pd = ProcessDefinition.parseParZipInputStream(zipInputStream);
            processDefinitionService.deploy(pd);
        } catch (RuntimeException e) {
            ActionErrors errors = new ActionErrors();
            errors.add("deploy", new ActionMessage("请提供正确的流程定义文档(.zip)", false));
            saveErrors(request, errors);
            return mapping.findForward("deployUI");
        }
我们一定不能忘记判断上传的文件是否为.zip文件

7.查询流程定义文件Action 类的实现
Long id = Long.parseLong(request.getParameter("id"));
        ProcessDefinition pd = processDefinitionService.getById(id);
        byte[] content = pd.getFileDefinition().getBytes("processdefinition.xml");

        response.setContentType("text/xml;charset=utf-8");
        response.getOutputStream().write(content);
        return null;
查询流程图片(processimage.jpg)
Long id = Long.parseLong(request.getParameter("id"));
        ProcessDefinition pd = processDefinitionService.getById(id);
        byte[] content = pd.getFileDefinition().getBytes("processimage.jpg");

        response.setContentType("image/jpeg");
        response.getOutputStream().write(content);
        return null;

这查看上传的流程文件和流程文件时,我们使用了一个打开小窗口 window.open()

传智播客_汤阳光OA项目12天_含JBPM完整版 该视频是2013年年中的版本,含后四天JBPM,无任何加密及付费 立即下载

相关推荐

传智播客OA系统全套源代码

传智播客OA系统完整源代码 附带JBPM源码完整 SSH方案可供参考学习

传智播客——OA项目实战(三)

今天真正接触到OA部分,相当的迷糊,相当的昏头 一 各种实体之间的关系 先来看一张表 掌握实体之间的关系其实就是掌握实体之间的数量对应关系 部门 员工 一对多  员工 岗位 多对多  员工 文档 一对多  员工 审批信息 一对多  文档 审批信息 一对多  文档模版 文档 一对多在写具体的实体配置文件时,需要注意一对多与多对一的对应。 比如一边写  

chusheng2009的专栏 1055

传智播客OA项目

SpringMVC整合MongoDB开发---http://www.linuxidc.com/Linux/2015-02/114229.htm

OA项目的审批流转模块实现

这个模块分了三个小模块逐步实现模块功能,分别是流程与表单管理/执行流程/查询 复习一下JBPM,工作流动包括:部署,启动,查询,执行(开始,结束),Signal 1.流程定义  ProcessDefinition pd = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml"); JbpmConf

抬头30°的微笑的专栏 2557

OA系统模块概述

文档介绍了一个OA系统的模块划分,让初接触者可以更好的理解OA系统的流程!

传智播客oa系统java源码

传智播客oa系统java源码 技术 jbpm 工作流

传智播客JAVA培训OA项目 审批流转模块二

传智播客JAVA培训OA项目 审批流转模块二虽然这两天学习的知识点是spring,但是我的观点就是学一个知识点就要学通吧,因为如果前面的知识都没有学会,又急着去学习新的东西,只会欠下越来越多的东西!这也是我学习的主张。说实在的,上一个项目OA项目的都没有理解得透彻,就急着去学,只会越来越大的压力,越来越没有动力!只有脚踏实地的去做事,做人,对于我们这些普通的人来说,才是最好的路吧!这是我的

IT路漫漫 3928

传智播客OA+工作流实战 01

01_传智播客OA+工作流实战_了解和认识工作流系统

传智播客JAVA培训OA项目 审批流转模块

传智播客JAVA培训OA项目 审批流转模块(未)做工作,做技术,最主要的就是有一种专研的功能,特别是在学习的初期阶段也很重要,因为,老师永远不可能把所有的知识交给你,就像,你被你母亲生了下来,他手把手的教会了你走路,但是人生的路却是要你自己去走的一样。往日的学校,也仅仅是教会了你做人的道理,或者是学习一个东西的方法。而今,你我走进了社会,社会,很少会有人来教你了,很多东西都得自己去领悟,做

IT路漫漫 6738

数据安全实战技能解析:从加密攻防到数字水印的竞赛指南

数据安全是信息安全领域的核心,其基础在于密码学与信息隐藏技术。密码学通过加密算法(如AES、RSA)和哈希函数,保障数据的机密性与完整性,其原理涉及对称/非对称加密、工作模式及密钥管理。数字水印技术则基于信号处理(如DCT/DWT变换),将信息嵌入多媒体载体,用于版权保护与溯源。这些技术的价值在于为数据全生命周期提供“防泄漏”与“可追溯”的解决方案,广泛应用于企业数据治理、合规审计和**数据防泄漏(DLP)** 系统。本文以一场贴近实战的**数据安全职业技能竞赛**为切入点,深入剖析如何运用密码分析、磁盘取

weixin_34314962的博客 402

Synopsys PCIe IP 实战笔记:手把手教你配置本地数字回环(PIPE/RMMI)

本文详细介绍了Synopsys PCIe IP本地数字回环(PIPE/RMMI)的配置与调试全流程,涵盖硬件连接、寄存器操作及实战技巧。通过数字回环模式,开发者可在无真实对端设备的情况下验证PCIe接口功能,适用于芯片验证和FPGA原型开发。文章还提供了常见问题排查和性能优化建议,助力高效完成协议解析与调试。

weixin_30394669的博客 323

java制作oa审批流程,传智播客JAVA培训OA项目 审批流转模块

传智播客JAVA培训OA项目审批流转模块(未)做工作,做技术,最主要的就是有一种专研的功能,特别是在学习的初期阶段也很重要,因为,老师永远不可能把所有的知识交给你,就像,你被你母亲生了下来,他手把手的教会了你走路,但是人生的路却是要你自己去走的一样。往日的学校,也仅仅是教会了你做人的道理,或者是学习一个东西的方法。而今,你我走进了社会,社会,很少会有人来教你了,很多东西都得自己去领悟,做人,人与...

weixin_39669629的博客 2713

【DRAM存储器六十一】LPDDR5介绍--LPDDR5/5X/4/4X IO结构

简述LPDDR5/5X/4/4X IO结构及等效电路下的VREF理论值计算

highman110的博客 481

传智播客java学习--OA审批流转1

我今天学习了审批流转的知识: 1,为什么要有审批流转(目的)2,审批流转模块要实现的功能(要求)3,解决方案与界面1,目的    1,审批流转就是把单位内部的各项审批电子化,如工作请示、出差申请、采购申       请、报销等日常工作流程。    2,审批流转所用的流程是表单流转的步骤,其核心是表单(或叫做文档),流程       是为表单服务的,且一个表单对应一个流程。没有表单的

634

Flink实战(101):双流join(三)双流中实现Inner Join、Left Join与Right Join

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 简介 之前文章中提到JoinedStream与CoGroupedStream,例如下列代码: dataStream.join(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time.seconds(3))) .apply { ... } 由于joinedStream与

微信搜:import_bigdata,大数据领域硬核原创作者 737

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2168

传智播客-----OA审批流转的需求与方案

搜狐博客 > 大志若愚 > 日志 2009-09-26 | 传智播客-----OA审批流转的需求与方案 今天我们学习了审批流转 1,为什么要有审批流转(目的) 2,审批流转模块要实现的功能(要求) 3,解决方案与界面 1,目的 1,审批流转就是把单位内部的各项审批电子化,如工作请示、出差申请、采购申 请、报销等日常工作流程。 2,审批流转所...

q123inhao的博客 256

GEE 案例:基于陆地卫星8号(大气层顶反射率数据)LANDSAT/LC08/C02/T1_TOA的生态遥感指数RSEI计算、可视化和下载

摘要:基于GEE的遥感生态指数(RSEI)计算方法 本文介绍了利用Google Earth Engine(GEE)平台计算遥感生态指数(RSEI)的全流程方法。主要内容包括:研究区域定义、Landsat8数据获取与去云预处理、关键生态指标计算(地表温度LST、植被指数NDVI、湿度指数WET和建筑指数NDBSI)、主成分分析(PCA)降维处理,以及结果可视化与数据导出。通过结合多源遥感指标并采用归一化处理,构建了综合反映区域生态环境质量的RSEI指数。该方法为生态环境监测提供了高效的技术方案,所有计算过程均

此星光明博客 446

传智播客--OA项目的表单管理模块

OA项目的倒数第二天了,完成了大部分的模块,但还有几个重要的部位没有完成.还要继续努力.这几天的编写,感觉有点吃力了.晚上总是完不成老师白天讲的内容,我得更加努力才行.我的同学们,每天都到9点多才离开学校.今天的任务是主要完成了表单模板管理.1.这个模块的需求执行审批流转请假单.html --> 起草申请(列表) --> 申请页面(显示表单) --> 提交申请(

图画hadoop 1337

C++如何实时监测另一个进程是否已经退出?(附源码)

调用WaitForSingleObject实时监测目标进程是否已经退出

dvlinker的技术专栏 8276

汇川Easy系列斜坡函数功能块(支持状态输出)

IN rSetValue REAL 0.000000 0.000000 不保持 目标值 1IN rMaxValue REAL 0.000000 0.000000 不保持 最大目标值 2IN rMinValue REAL 0.000000 0.000000 不保持 最小目标值 3IN rSmoothTime REAL 100.000000 100.0000 不保持 最小到最大值平滑时间 单位 秒 4IN diTs DINT 10 10 不保持 函数调用周期采样时间中断时间 5。

RXXW_Dor的博客 457

传智播客Java培训--OA(项目构架)

最近几天连续下了几天雨,天气凉爽了许多,虽然挺讨厌下雨的,但是雨水总比火辣辣的太阳强啊。从今天开始汤阳光老师带我们做一个OA项目,这是传智播客就业班课程中的三个项目之一,一共十二天,属于半天讲半天练的项目,目的通过实际项目开发中的案例的分析和问题解决使我们拥有跟在公司做项目类似的经验以及对以前所学习知识更好的综合应用,以助我们找到更好的工作。

2398

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

传智播客——OA审批流转需求与方案

OA项目课程的第四天,今天的主要内容分析审批流程的需求与指定相应的解决方案,项目代码的编写放到后面的课程。还是那句话,解决问题最重要的是思路,所以项目的需求分析和解决方案非常的重要。一 审批流转的目的1.       审批流转就是把单位内部的各项审批电子化,如工作请示、出差申请、采购申请、报销请假等日常工作流程。2.       审批流转所用的流程是表单流转的步骤,其核心是表单(或叫做

436

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

传智播客oa学习,请假流程

   今天继续学习oa,学习jbpm的时候已对员工请假流程有所了解,今天汤老师对在oa项目中加入员工请假流程进行了讲解,讲课过程中汤老师还提到了学习方法的问题,老师让做的练习做不出不要紧,一定要思考,然后跟着老师思路听老师的讲解,理解老师的思路,然后再自己做一遍,做的多了,自然就掌握了。不要急,要有好的心态,才能有进步。总结一下今天学习的重点和遇到的问题。   一些流程都是很相似的,重点掌握一个即

TuiRoger的专栏 2160
上一篇: 传智播客--OA的部门管理和员工管理模块的实现总结
下一篇: 传智播客--OA项目的表单管理模块
getclass
博客等级 码龄18年 53粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值