基于工作流的高校信访信箱管理系统的设计与实现
2016-01-09贾向炜高瞻徐菲
贾向炜+高瞻+徐菲
摘要:信访信箱既区别传统的信箱又不同于大家熟知的email电子信箱,它是纸质信访件的电子化、无纸化的电子信访件的网络信访通道,它是根据国家最新的《信访条例》的规定来向学校反映情况、提出建议、意见或者投诉请求。该系统是运用工作流技术实现的典型的J2EE应用,实现了写信、信访办转信、部门处理、意见反馈,信访件全生命周期管理,实现了信访件办理情况的实时查询和信访件的各类统计功能。
关键词:工作流;信访;J2EE应用
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)30-0053-04
Design and Implementation of the Petition Letters and Visits System Based on Workflow
JIA Xiang-wei, GAO Zhan,Xu Fei
(Data and Information Center of Xi'an JiaoTong university, Xi'an 710049, China)
Abstract: The Petition Letters and VisitsSystemis different from the traditional mailbox and email electronic mail box as we knew, which is the electronic, paperless electronic letters and visits of the paper petition channels. Letters and Visits Systemis according to the latest "letters and visits Ordinance" to reflect the situation, to propose suggestions, opinions or complaints reques.It is the typical J2EE applications whichusing of workflow technology. Realizingthe complete lifecycle management ofWriting Letter, departmentingthe petition, converting, feedbacking.And italsorealizes the real-time query of the petition and the statisticsfunction of the various types of letters and visits.
Key words: workflow; letters and visits; J2EE application
信访信箱是响应国家号召,以国家最新的《信访条例》为依据,运用java语言,采用基于工作流的多层开发框架技术实现的管理系统,是典型的web2.0环境下的J2EE应用。
该系统主要功能:1)我要写信 ;2)信访职责;3)写信帮助;4)信访法规;5)信件查询;6)信件处理;7)信件统计。技术特点:基于工作流的J2EE平台应用,可以灵活处理各信件流程,方便流程的回退、流程监控、流程查看。
1 关键技术介绍
1) 工作流技术
工作流技术是业务流程部分或全部自动化执行的一种技术,在此过程中,工作任务按照指定的规则进行转送、传递,实现组织内部成员间的有效协同工作。工作流最关键的技术就是工作引擎和工作流建模。
工作流引擎是工作流技术中的核心部件,完成工作流程的流程定义和实例化,为过程和活动的执行导航计算,并为流程的工作任务提供参与者、流程变量,并控制整个流程的业务流、数据流和信息流。本系统采用的是synchroflow工作流引擎,它是本土化的高效工作流的引擎技术。针对业务流程进行梳理、建模、仿真、、流程启动、、流程监控、流程度量和流程优化,提供了业务流程全生命周期的管理和解决方案。
2) jquery技术
jquery是一套轻量级的JavaScript库,简化HTML与JavaScript之间的操作,可以兼容CSS3及各种浏览器。
2 系统的设计和实现
2.1 信访流程工作流建模
本平台采用工作流技术,是B/S方式的典型J2EE应用。系统的部署图如图1所示:
信访件的信件受理流程如图2所示:
信访办负责人员转办—>主办部门办理—>回复信访人—>返学校—>信访办负责人公示信件及处理结果。
通过工作流的建模的技术的运用,该信访信箱的模型图3如下:
信访秘书收到信访信件反馈的信件进行整理、处置、转送其他部门或校领导,处理完信件内容,信访秘书在秘书办理环节可完成对信访人的信件的回复、信件办理完成等操作。
信访件在部门内部处理流程如下:
信访秘书转办部门后,启动该子流程,根据转办的部门的个数来决定启动子流程的个数。子流程启动后,设定每个子流程的秘书整理的参与者变量,并开始该活动给相应人员发送待办,秘书转办部门领导后,转办给相关人员处理,最后领导审核后再由秘书代表本部门签订最后的信访处理结果后,返回信访办。
2.2 关键技术实现
2.2.1 业务实现部分
通道方式是面向学校统一身份认证账号的用户,通道二方式是面向匿名用户,目前针对匿名用户暂未开放,因为匿名的问题处理后无法及时进行反馈及相应的处理。用户通过统一身份认证后,获取到用户的电子邮箱、联系方式,方便信访办及时反馈。用户填写信件标题,信件内容后,即提交流程,通过以下代码实现流程提交。
ProcessInsBeanproIns = new ProcessInsBean();
proIns.setMonitorRmiUrl(monitorStr);
proIns.setRmiUrl(rmiStr);
proIns.setProcessInsId(Integer.parseInt(procId));
proIns.init();
String processinsname= (String) commonParams.get("description");
if(processinsname.length()>=180){
processinsname = processinsname.substring(0,180)+"…";
}
ProcessMonitorpMonitor = ProcessMonitorGlobalConf_XJTU.getInstance(); pMonitor.setProcessName(Integer.parseInt(procId),processinsname);
proIns.setRelevantData(datas);
proIns.start(username);
流程当中比较关键的部分就是进行子流程的开始和结束部分,以下代码实现工作流程的自动启动。
[……
import com.flow.api.client.ProcessManager;
import com.flow.enactmentservice.processmonitor.ProcessMonitor; //引入相关类库
import com.flow.jdoa.getPerson;
import com.flow.jdoa.orgpersonMXJTU;//导入工具类
……
public class startProcess_commonDoc {
/**
*公用子流程启动
* @paramprocessInsId流程实例ID
* @param operator 参与者
* @paramcommonParams公用相关参数map
* @processDefId流程定义过程编号
*/
public void startProcess_commonDoc(String processInsId,Stringoperator,HashMapcommonParams,StringprocessDefId)
{
String rmiStr=””;
rmiStr = PropertyServiceBean.getDbRmiUrl();//工作流服务器数据库存取rmi的地址
ProcessManagerprocessManager =ProcessManager.getInstance(rmiStr);//获取管理类实例
ProcessMonitorprocessMonitor=ProcessMonitorGlobalConf_XJTU.getInstance();//获取监控类实例
......
}}\&]
子流程的启动用异步发送的方式,用线程来进行流程的启动。具体代码如下:
......
//用线程来实现多部门发子流程 class Thread1 implements Runnable{
String procId;
String userName;
HashMapcommonParams;
public Thread1(String procId,StringuserName,HashMapcommonParams){
this.procId=procId;
this.userName=userName;
this.commonParams=commonParams;}
public void run() {
startProcess_commonDocstartCommonDoc = new startProcess_commonDoc();
startCommonDoc.startProcess_commonDocByPara(procId,userName,commonParams,"608127580");}}
Thread tread=new Thread(new Thread1(procId,curUser.getUsername(),commonParams));
tread.start();
......
针对系统用户提交的信访件需要及时进行反馈信访件的处理结果,因此,根据信访件在提交、转办、部门办理完成、发布时,系统均自动发送邮件。具体发送邮件的代码如下:
MailSenderInfomailInfo = new MailSenderInfo(); //实例化邮件发送对象
mailInfo.setValidate(true);//设置校验用户名、口令开关
mailInfo.setMailServerHost("smtp.*.*");//设置邮件服务器的主机地址
mailInfo.setMailServerPort("25"); //设置邮件服务器的端口
mailInfo.setFromAddress("***@mail.xjtu.edu.cn"); //设置邮件发件地址
mailInfo.setToAddress(toAddress);//设置邮件收件地址
mailInfo.setUserName("***@mail.xjtu.edu.cn"); //设置发件邮箱用户名
mailInfo.setPassword("****"); //设置发件邮箱口令
mailInfo.setSubject("领导信箱反映问题处理情况");
String scontent ="您好!
; ; ; ; ; ; ; ;";
scontent =scontent +content;
scontent =scontent+"
-------
";
scontent = scontent+"温馨提示:此邮箱仅作学校信访办回复使用,不具有收信功能。
";
mailInfo.setContent(scontent); //设定发送内容
SimpleMailSendersms = new SimpleMailSender(); //实例化简易发送邮件接口
//sms.sendTextMail(mailInfo);//发送文体格式邮件
sms.sendHtmlMail(mailInfo);//发送html格式邮件,系统用此方式
以下部分是针对发送邮件的核心功能进行说明:
public static booleansendHtmlMail(MailSenderInfomailSendInfo){
MyAuthenticatormyauth = null;
Properties mypro = mailSendInfo.getProperties();
//如果isValidate =true则表示需要身份认证,应实例化密码验证器
if (mailSendInfo.isValidate()) {
myauth = new MyAuthenticator(mailSendInfo.getUserName(), mailSendInfo.getPassword());
}
// 实例化发送邮件session,参数1邮件会话属性,参数2密码验证器
Session smSession= Session.getDefaultInstance(mypro,myauth);
try {
Message mailBean = new MimeMessage(smSession);// 实例化邮件信息对象
Address fromAdress = new InternetAddress(mailSendInfo.getFromAdress());// 实例化邮件发送者地址
mailBean.setFrom(fromAdress); // 设定邮件来源地址
// 实例化邮件接收者地址toAdress,并设定到邮件对象中
Address toAdress = new InternetAddress(mailSendInfo.getToAddress()); mailBean.setRecipient(Message.RecipientType.TO,toAdress);
mailBean.setSubject(mailSendInfo.getSubject());// 设定邮件的主题
// 设定当前系统时间为邮件发送的时间
mailBean.setSentDate(new Date());
Multipart mPart = new MimeMultipart();// 实例化MimeBodyPart对象
// 实例化MimeBodyPart,用于发送html邮件
BodyPartbodyPart = new MimeBodyPart();
bodyPart.setContent(mailSendInfo.getContent(), "text/html; charset=utf-8");
mPart.addBodyPart(bodyPart);// 设置HTML邮件内容
mailBean.setContent(mPart);// 设定邮件内容
Transport.send(mailBean);//发送邮件
return true;
} catch (MessagingExceptionme) {
me.printStackTrace(); }
return false; }
2.2.2 统计部分
针对系统的统计部分,采用了amCharts组件进行展现,动态查询数据动画显示统计数据,可以根据需要将数据显示成柱形图,条形图,平滑线,饼图等多种形式,用户可以进行的操作有放大,平移图表,添加图形说明等。
以下部分实现了信访文件按年度来进行统计的柱图:
varchartData = [];
functioncreatChart()
{
data ="<%=datainfo%>";
var rows = data.split(";");
for (var i = 0; i if (rows[i]) { var column = rows[i].split(":"); //key var s1= column[0]; //value var s2 = column[1]; //分割的值塞到每个子object vardataObject = {"da1":s1, "da2":s2}; //填充数组 chartData.push(dataObject); } } chart = new AmCharts.AmSerialChart(); chart.dataProvider = chartData; chart.categoryField = "da1"; chart.startDuration = 1; chart.depth3D = 20; chart.angle = 20; chart.columnWidth = 0.5; varcategoryAxis = chart.categoryAxis; categoryAxis.gridPosition = "start"; varchartCursor = new AmCharts.ChartCursor(); chartCursor.cursorAlpha = 0; chartCursor.zoomable = false; chartCursor.categoryBalloonEnabled = false; chart.addChartCursor(chartCursor); chart.creditsPosition = "top-right"; chart.write("columnchartdiv"); chart = new AmCharts.AmSerialChart(); chart.dataProvider = chartData; chart.categoryField = "da1"; chart.startDuration = 1; chart.depth3D = 20; chart.angle = 20; chart.columnWidth = 0.5; varcategoryAxis = chart.categoryAxis; categoryAxis.gridPosition = "start"; graph = new AmCharts.AmGraph(); graph.valueField = "da2"; graph.labelText = "[[value]]"; graph.balloonText = "[[category]]"; graph.type = "column"; graph.lineColor = "#197fe3"; graph.lineAlpha = 0; graph.fillAlphas = 0.8; chart.addGraph(graph); varchartCursor = new AmCharts.ChartCursor(); chartCursor.cursorAlpha = 0; chartCursor.zoomable = false; chartCursor.categoryBalloonEnabled = false; chart.addChartCursor(chartCursor); chart.creditsPosition = "top-right"; chart.write("columnchartdiv");} window.onload = function(){ 3 结束语 本系统是基于工作流技术实现的高校信访信箱管理系统,它的开发和应用,提高了信访件的处理效率,透明度,公开性。针对质信访件的处理进行了无纸化、电子化、高效化的升级和改造,使得业务流程清晰,处理便捷,有效地提高了信访的工作效率和透明度。 参考文献: [1] 陈农心. 基于SSH2的新型网上信访平台的设计与实现[J]. 制造业自动化, 2011(6). [2] 杨飞. 省级网上信访与公众诉求信息处理系统的研究和实践[J]. 电子政务, 2008(Z1). [3] 高山. 近五年我国高校信访工作研究综述[J]. 浙江理工大学学报, 2013(30):969-972.