博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
邮件审批工作流实现方案
阅读量:6244 次
发布时间:2019-06-22

本文共 1570 字,大约阅读时间需要 5 分钟。

针对OA移动审批的问题,仿照费控系统邮件回复审批工作流的实现思路,提出在转交下一步的时候直接推送邮件到审批人的外部邮箱,审批人收到邮件以后回复内容就可以审批。此审批方式能很好的解决移动审批的工作,也可以相对提高兼容性。

一、概述

   方案的主体思路就是通过邮件服务来解决办公设备在互联网同业务域系统之间的数据交换问题。流程平台发送申请审批邮件、监听审批邮件、自动接收并进行解析处理,将邮件账号、审批结果同任务编号等信息关联,从而提交邮件审批任务的方式推进流程执行。

1.1 审批实现过程概述

流程运行平台在产生任务的时候,如果任务可以支持邮件审批,就发送任务相关的审批邮件到对应的审批人。审批人收到邮件后,填写批复内容并回复邮件。运行平台接收邮件并解析,找到对应的流程人工任务并提交。

邮件审批时序图:

1.2 邮件审批过程时序图

关键步骤描述:

  1.3时序图详解

创建审批任务及上下文:是指审批任务创建后,如果任务需要支持邮件审批(邮件审批与普通审批方式一般是并存的)则需要额外创建邮件审批相关的上下文记录到数据库中。记录的上下文目的是能够将回复邮件准确的同任务关联以及安全校验避免仿冒邮件进行审批。上下文需要包含如下字段:任务ID、审批人邮件、发送日期、审批有效时间

发送审批邮件:通过SMTP方式发送邮件到审批人邮箱,发件人为流程平台本身的系统邮箱,收件人为审批人邮箱。邮件正文中除了审批任务的表单信息之外,还应明确告诉审批人回复邮件的格式要求,以及注意事项。邮件示例如下:

审批人接收邮件:审批人通过手机、平板、笔记本电脑等终端的邮件客户端接收邮件。业务系统完成功能后需要对常用的邮件客户端进行测试验证。

审批人回复审批结果邮件:审批人通过手机、平板、笔记本电脑等终端的邮件客户端回复审批邮件。回复格式及注意事项需要在原邮件中想审批人说明。

流程平台接收审批邮件:流程平台通过邮件接收协议来获取审批邮件,常见的邮件服务器支持的邮件获取协议有POP3\IMAP,还有微软的EXCHANGE邮件服务器,接收程序需要根据邮件服务器开发的协议编写邮件接收程序

解析邮件内容,关联任务上下文:收到邮件后,需要解析邮件上下文,获取安全秘钥并解密,同任务上下文进行关联校验。校验通过后执行后续动作。

提交任务推进流程:根据邮件关联的任务ID和邮件内容中的审批结果提交对应的流程任务实例,并设置审批结果到上下文。

二、工作重点:

 

 

工作内容

难度

工作量

备注

回复邮件的监听和获取

10d

基于zimbra二次开发关联或直接采用接收协议拦截

邮件正文的移动端兼容

/

5d/1d

考虑使用以上邮件模板,不嵌入pc web表单。如嵌入pc web表单 5d,不嵌入1d

邮件的内容解析和与流程系统的联动

5d

测试

1d

buffer

4d

合计

25d/21d

 

三、该方案的缺陷

1.工作流审批不仅仅是简单的审批通过或者审批不通过这样简单,所以需要有各种表达;仅采用审批通过/不通过具有严重局限性,以上方案无法通过扩展解决这一局限性;

2.由于PC和手持设备浏览器兼容性问题,不可能在邮件中提供丰富的交互界面;以本系统为例,如嵌入表单,需要对表单的表达作大量修改,以适应手持设备;

3.对回复邮件的监控(一般采用不间断轮询,或者邮件服务器提供的某种监控功能)和解析,会影响系统的性能;

   综合上面的问题可以看到我们需要一套标准的约定实现邮件和OA工作流系统的交互,否则系统是不会识别的,就像我们平时的短信回复也只能是简单的YN,而不能实现较为复杂的交互spacer.gif

 

 

参考资料:

1.

2.

3.

4.

     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/1785558,如需转载请自行联系原作者

你可能感兴趣的文章
Python基础笔记
查看>>
对Vsftpd的一些总结
查看>>
搭建高可用mongodb集群(二)—— 副本集
查看>>
001-Python运算符
查看>>
saltstack使用之二(完成部署编译nginx以及部分cp模块的使用)
查看>>
Test20160120
查看>>
Android WindowManager$BadTokenException异常
查看>>
ELK学习3 启动es常见错误或问题
查看>>
Linux快捷键和帮助
查看>>
2015年10月22日作业
查看>>
tr命令练习
查看>>
LNMP部署实例及HTTPS服务实现
查看>>
9种用户体验设计的状态是必须知道的(四)
查看>>
什么是DVB-SI?对PSI(PAT,PMT,CAT,NIT,SDT,EIT)的理解
查看>>
JavaSE 学习参考:方法重写
查看>>
Percona MySQL 5.7 Linux通用二进制tar包安装(CentOS 6.5)
查看>>
90后女生吴江平独闯9个国家 吴江平穷游照片欣赏
查看>>
linux密码策略
查看>>
【REACT NATIVE 跨平台应用开发】环境搭建问题记录&&XCODE7模拟器上COMMAND+R失效的几种替换方法...
查看>>
C++实现选择排序
查看>>