HR系统邮件审批功能总结
时至今日,来兰亭工作的第三个小任务算是暂时告一段落了。这个小任务是耗费时间最长的,因此在这里总结整理一下。
首先这个功能的出发点是方法领导进行手下员工的审批,包括加班申请,休假申请,和漏打卡申请。由于HR系统的不给力,导致领导登录HR系统进行审判的时候耗费了太多的时间。所以考虑以邮件的形式,对每个申请进行系统外的审批。
起初考虑做这个功能的方案有两个:
- 直接调用原系统DLL里的审批方法。
- 手写sql,执行审批的sql语句或存储过程。
通过查看代码发现,审批的流程极其复杂,因为引入了一个工作流系统,所有的流程都是工作流设计器来完成的。而工作流设计器是一个以界面拖拽控件的形式来完成定制的业务逻辑。逻辑的关键代码在工作流设计器里没有找到(怀疑是原开发公司把核心代码编译完成后交付的)。所以,代码的内部逻辑不是很好找。
于是尝试用第一种方式:用我自己的dll去调用他的dll中的方法。首先需要引用他所有相关的dll,否则编译不会通过。(他所以的dll有200多个,由于不知道哪些是和此功能相关的,所以得全部引用上……),尝试调用方法的时候总是报错。怀疑是他里面的方法在调用前进行过一些初始化的工作,比如初始化spring等等的东西,这个就不太好办了。因此,该方案被搁置。
接下来准备尝试手写sql来完成审批,这也是领导希望的一种方式,因为它无论从效率上还是从对系统数据库的理解上都是更好的。但是监控的结果让我彻底放弃了这种想法。
尝试着对审批同意的事件进行了监控。发现记录了700多条sql…… 面对这个数字我只能感叹,也难怪之前的系统效率不高呢。于是尝试着整理数据库的结构,用到了一些工具来生成数据库文档。但是还是不知从何分析。于是此方案再次搁置。
于是又想到调原有的方法来模拟,但是初始化这块总是摸不透。灵感一现,那就模拟一下初始化的工作呗,怎么模拟呢?由于对原系统的工作流程不熟悉,那就完全照搬——复制了一个一模一样的站点,然后修改我需要的部分。这样,复制后的站点可以正常的启动,调接口。
于是我在新站点下建立了一个调用接口的测试页面,调用的过程发现原网站有身份验证(forms身份验证),在没有通过验证前,无法访问网站内的aspx页面
<authentication mode="Forms"/> <forms loginUrl="~/logon.aspx" name="ESSAuthForm" timeout="10" protection="All" path="/"> <credentials passwordFormat="MD5"> <user name="username" password="password"/> </credentials> </forms> </authentication>
此段配置是说网站采用forms身份验证,验证的原理就是登录成功后,框架会写入一个身份令牌的cookie到客户端浏览器,在访问其他页面的时候,需要进行验证。没有授权的用户访问页面时,就会被重定向到logon.aspx这个页面去。
于是就想,为我的某些特权页面允许匿名访问不就行啦。
一、设置所有页面都需要验证
<system web>
<authentication mode="Forms">
<forms loginUrl = "Lonin.aspx" name = ".ASPXFORMSAUTH"/>
</authentication>
</system web>
二、再特别设置对某个目录下的页面不需要验证(NoAuto为不需要验证的页面所在的目录)
<location path="NoAuto">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
尝试的时候发现不起任何作用。这下就麻烦了。经过研究,怀疑系统在其他地方还有对身份授权的验证,于是搜索了一下dll,发现在有个验证的命名空间下有两个方法,进行了身份的验证,验证不通过的话,就跳转到登录页。
于是……果断注释掉那两个方法,问题解决!
这个自定义的验证是在这里进行的配置:
<httpModules> <add name="AuthenticateModule" type="CDC.PowerESS.Web.Support.AuthenticateModule,ESS.Web"/> </httpModules>
相当于在处理管道的时候就进行了验证,杯具啊。
突破了这个,剩下的任务就好办了。
写个批量审批页面,ajax调用接口。
再写个后台程序,就齐了。
HR系统邮件审批功能总结的更多相关文章
- 系统右键自定义功能-右键备份【C#】
平时在某些公司发布网站的时候,都是手动备份文件,以免发布错误,做回滚使用.频繁的发布,在做备份的时候也会稍稍浪费点时间.当然在一些大的公司都会有一些自动发布系统,就不会出现这种问题了,对这种问题,我做 ...
- HR系统+人脸识别
近期一直在写一套HR系统,这套HR系统和人脸识别相结合.全然杜绝取代刷卡的情况产生.系统的灵活性比較强,开发简洁高速. 例如以下是一些功能上的截图 考勤模块仅仅是列举当中一个请假申请的功能做为展示 ...
- Django error信息邮件通知功能配置部署
1. 最近QA成为项目的重点,除了突破依赖外部表的阻力开始启用单元测试,还有一点就是对在线的生产服务的错误信息启用这个邮件通知功能,下面简单说一下启用方法: 1.发送邮件账号配置配置: EMAIL_H ...
- wordpress评论回复自动发邮件的功能
A.插件流,可以说WP强大的插件功能的确能省事不少. 插件的办法一般是两步:第一实现成功发邮件,第二时间评论自动回复,这就需要用到两个插件,一个是Configure SMTP,一个是Mail To C ...
- shell邮件发送功能实现
本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...
- 学霸系统UI部分功能规格说明书
发布人员:软件工程实践小队 发布内容:学霸系统UI部分功能规格说明书 版本:学霸V1.1版本 ◆Part 1:引言 1.1目的 本功能规格说明书的目的在于明确 ...
- 如何设置outlook实现自动秘密抄送邮件的功能?
很多朋友会发现虽然在家里同步了公司的邮箱可以正常收发邮件,可是每当使用家里的outlook发送相关邮件的时候,在公司的邮箱里找不到相关的发件记录,只能同步收件箱,而不能同步发件箱应该是比较让人困扰的问 ...
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- Aspose.Words实现邮件合并功能和打印
前言 最近公司要做一个B/S架构的web打印系统,主要是可以上传.下载.邮件合并.打印等等,还有就是角色的分配.用户的创建.日志记录等等,跟一般的web系统一样.可能不一样的就是需求:想把excel的 ...
随机推荐
- IOT(Index Organized Table)
我们知道一般的表都以堆(heap)的形式来组织的,这是无序的组织方式.Oracle还提供了一种有序的表,它就是索引组织表,简称IOT表.IOT表上必须要有主键,而IOT表本身不对应segment,表里 ...
- Android源码及SDK国内镜像下载
Android源码及SDK国内镜像下载Android源码下载: 今天发现,清华大学提供AOSP镜像,以前都是从Google的站点下载同步更新的,但是现在有了国内的镜像站点就好多了,下载Androidd ...
- Tuxedo入门学�
中间件介绍: 介于客户机和server之间的夹层,突破了传统的c/s架构,为构建大规模,高性能,分布式c/s应用程序提供了通信,事物,安全,容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发, ...
- 采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址
采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license ...
- java反射机制性能优化
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.uti ...
- 每位iOS开发人员不容错过的10大实用工具
内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...
- jq实现图像旋转木马:轮焦点+关于控制+自己主动旋转木马
资源:http://www.ido321.com/862.html html代码: 1: <!DOCTYPE html> 2: <html lang="en"&g ...
- C++指针和引用简介
摘要 本文介绍C++指针和概念引用 这是一个指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用差别 指针和引用的同样点和不同点 **什么是指针** 指针就是一个存放地址的 ...
- linux学习(一个) 在unbuntu通过添加新的用户
最近安装了双系统,开始折腾unbuntu该.Linux系统是一个多用户操作系统,非常多的人才完整的操作需要管理员权限,完全管理员权限是非常重要的.人谁是刚开始学习,般用户的权限即可了,相对于刚開始学习 ...
- POJ 3691 DNA repair 基于AC自己主动机DP
dp[i][j] 它表示的长度 i 下游前缀 j 更改节点的最小数量. 很清楚dp[0][0] = 0; dp[ i ][ j ] = min(dp[ i ][ j ],dp[i-1][k] + (j ...