賈向煒+高瞻+徐菲
摘要:信訪信箱既區(qū)別傳統(tǒng)的信箱又不同于大家熟知的email電子信箱,它是紙質信訪件的電子化、無紙化的電子信訪件的網(wǎng)絡信訪通道,它是根據(jù)國家最新的《信訪條例》的規(guī)定來向學校反映情況、提出建議、意見或者投訴請求。該系統(tǒng)是運用工作流技術實現(xiàn)的典型的J2EE應用,實現(xiàn)了寫信、信訪辦轉信、部門處理、意見反饋,信訪件全生命周期管理,實現(xiàn)了信訪件辦理情況的實時查詢和信訪件的各類統(tǒng)計功能。
關鍵詞:工作流;信訪;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
信訪信箱是響應國家號召,以國家最新的《信訪條例》為依據(jù),運用java語言,采用基于工作流的多層開發(fā)框架技術實現(xiàn)的管理系統(tǒng),是典型的web2.0環(huán)境下的J2EE應用。
該系統(tǒng)主要功能:1)我要寫信 ;2)信訪職責;3)寫信幫助;4)信訪法規(guī);5)信件查詢;6)信件處理;7)信件統(tǒng)計。技術特點:基于工作流的J2EE平臺應用,可以靈活處理各信件流程,方便流程的回退、流程監(jiān)控、流程查看。
1 關鍵技術介紹
1) 工作流技術
工作流技術是業(yè)務流程部分或全部自動化執(zhí)行的一種技術,在此過程中,工作任務按照指定的規(guī)則進行轉送、傳遞,實現(xiàn)組織內部成員間的有效協(xié)同工作。工作流最關鍵的技術就是工作引擎和工作流建模。
工作流引擎是工作流技術中的核心部件,完成工作流程的流程定義和實例化,為過程和活動的執(zhí)行導航計算,并為流程的工作任務提供參與者、流程變量,并控制整個流程的業(yè)務流、數(shù)據(jù)流和信息流。本系統(tǒng)采用的是synchroflow工作流引擎,它是本土化的高效工作流的引擎技術。針對業(yè)務流程進行梳理、建模、仿真、、流程啟動、、流程監(jiān)控、流程度量和流程優(yōu)化,提供了業(yè)務流程全生命周期的管理和解決方案。
2) jquery技術
jquery是一套輕量級的JavaScript庫,簡化HTML與JavaScript之間的操作,可以兼容CSS3及各種瀏覽器。
2 系統(tǒng)的設計和實現(xiàn)
2.1 信訪流程工作流建模
本平臺采用工作流技術,是B/S方式的典型J2EE應用。系統(tǒng)的部署圖如圖1所示:
信訪件的信件受理流程如圖2所示:
信訪辦負責人員轉辦—>主辦部門辦理—>回復信訪人—>返學?!?gt;信訪辦負責人公示信件及處理結果。
通過工作流的建模的技術的運用,該信訪信箱的模型圖3如下:
信訪秘書收到信訪信件反饋的信件進行整理、處置、轉送其他部門或校領導,處理完信件內容,信訪秘書在秘書辦理環(huán)節(jié)可完成對信訪人的信件的回復、信件辦理完成等操作。
信訪件在部門內部處理流程如下:
信訪秘書轉辦部門后,啟動該子流程,根據(jù)轉辦的部門的個數(shù)來決定啟動子流程的個數(shù)。子流程啟動后,設定每個子流程的秘書整理的參與者變量,并開始該活動給相應人員發(fā)送待辦,秘書轉辦部門領導后,轉辦給相關人員處理,最后領導審核后再由秘書代表本部門簽訂最后的信訪處理結果后,返回信訪辦。
2.2 關鍵技術實現(xiàn)
2.2.1 業(yè)務實現(xiàn)部分
通道方式是面向學校統(tǒng)一身份認證賬號的用戶,通道二方式是面向匿名用戶,目前針對匿名用戶暫未開放,因為匿名的問題處理后無法及時進行反饋及相應的處理。用戶通過統(tǒng)一身份認證后,獲取到用戶的電子郵箱、聯(lián)系方式,方便信訪辦及時反饋。用戶填寫信件標題,信件內容后,即提交流程,通過以下代碼實現(xiàn)流程提交。
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);
流程當中比較關鍵的部分就是進行子流程的開始和結束部分,以下代碼實現(xiàn)工作流程的自動啟動。
[……
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公用相關參數(shù)map
* @processDefId流程定義過程編號
*/
public void startProcess_commonDoc(String processInsId,Stringoperator,HashMapcommonParams,StringprocessDefId)
{
String rmiStr=””;
rmiStr = PropertyServiceBean.getDbRmiUrl();//工作流服務器數(shù)據(jù)庫存取rmi的地址
ProcessManagerprocessManager =ProcessManager.getInstance(rmiStr);//獲取管理類實例
ProcessMonitorprocessMonitor=ProcessMonitorGlobalConf_XJTU.getInstance();//獲取監(jiān)控類實例
......
}}\&]
子流程的啟動用異步發(fā)送的方式,用線程來進行流程的啟動。具體代碼如下:
......
//用線程來實現(xiàn)多部門發(fā)子流程 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();
......
針對系統(tǒng)用戶提交的信訪件需要及時進行反饋信訪件的處理結果,因此,根據(jù)信訪件在提交、轉辦、部門辦理完成、發(fā)布時,系統(tǒng)均自動發(fā)送郵件。具體發(fā)送郵件的代碼如下:
MailSenderInfomailInfo = new MailSenderInfo(); //實例化郵件發(fā)送對象
mailInfo.setValidate(true);//設置校驗用戶名、口令開關
mailInfo.setMailServerHost("smtp.*.*");//設置郵件服務器的主機地址
mailInfo.setMailServerPort("25"); //設置郵件服務器的端口
mailInfo.setFromAddress("***@mail.xjtu.edu.cn"); //設置郵件發(fā)件地址
mailInfo.setToAddress(toAddress);//設置郵件收件地址
mailInfo.setUserName("***@mail.xjtu.edu.cn"); //設置發(fā)件郵箱用戶名
mailInfo.setPassword("****"); //設置發(fā)件郵箱口令
mailInfo.setSubject("領導信箱反映問題處理情況");
String scontent ="您好!
?;?;?;?;?;?;?;?;";
scontent =scontent +content;
scontent =scontent+"
-------
";
scontent = scontent+"溫馨提示:此郵箱僅作學校信訪辦回復使用,不具有收信功能。
";
mailInfo.setContent(scontent); //設定發(fā)送內容
SimpleMailSendersms = new SimpleMailSender(); //實例化簡易發(fā)送郵件接口
//sms.sendTextMail(mailInfo);//發(fā)送文體格式郵件
sms.sendHtmlMail(mailInfo);//發(fā)送html格式郵件,系統(tǒng)用此方式
以下部分是針對發(fā)送郵件的核心功能進行說明:
public static booleansendHtmlMail(MailSenderInfomailSendInfo){
MyAuthenticatormyauth = null;
Properties mypro = mailSendInfo.getProperties();
//如果isValidate =true則表示需要身份認證,應實例化密碼驗證器
if (mailSendInfo.isValidate()) {
myauth = new MyAuthenticator(mailSendInfo.getUserName(), mailSendInfo.getPassword());
}
// 實例化發(fā)送郵件session,參數(shù)1郵件會話屬性,參數(shù)2密碼驗證器
Session smSession= Session.getDefaultInstance(mypro,myauth);
try {
Message mailBean = new MimeMessage(smSession);// 實例化郵件信息對象
Address fromAdress = new InternetAddress(mailSendInfo.getFromAdress());// 實例化郵件發(fā)送者地址
mailBean.setFrom(fromAdress); // 設定郵件來源地址
// 實例化郵件接收者地址toAdress,并設定到郵件對象中
Address toAdress = new InternetAddress(mailSendInfo.getToAddress()); mailBean.setRecipient(Message.RecipientType.TO,toAdress);
mailBean.setSubject(mailSendInfo.getSubject());// 設定郵件的主題
// 設定當前系統(tǒng)時間為郵件發(fā)送的時間
mailBean.setSentDate(new Date());
Multipart mPart = new MimeMultipart();// 實例化MimeBodyPart對象
// 實例化MimeBodyPart,用于發(fā)送html郵件
BodyPartbodyPart = new MimeBodyPart();
bodyPart.setContent(mailSendInfo.getContent(), "text/html; charset=utf-8");
mPart.addBodyPart(bodyPart);// 設置HTML郵件內容
mailBean.setContent(mPart);// 設定郵件內容
Transport.send(mailBean);//發(fā)送郵件
return true;
} catch (MessagingExceptionme) {
me.printStackTrace(); }
return false; }
2.2.2 統(tǒng)計部分
針對系統(tǒng)的統(tǒng)計部分,采用了amCharts組件進行展現(xiàn),動態(tài)查詢數(shù)據(jù)動畫顯示統(tǒng)計數(shù)據(jù),可以根據(jù)需要將數(shù)據(jù)顯示成柱形圖,條形圖,平滑線,餅圖等多種形式,用戶可以進行的操作有放大,平移圖表,添加圖形說明等。
以下部分實現(xiàn)了信訪文件按年度來進行統(tǒng)計的柱圖:
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}; //填充數(shù)組 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 結束語 本系統(tǒng)是基于工作流技術實現(xiàn)的高校信訪信箱管理系統(tǒng),它的開發(fā)和應用,提高了信訪件的處理效率,透明度,公開性。針對質信訪件的處理進行了無紙化、電子化、高效化的升級和改造,使得業(yè)務流程清晰,處理便捷,有效地提高了信訪的工作效率和透明度。 參考文獻: [1] 陳農心. 基于SSH2的新型網(wǎng)上信訪平臺的設計與實現(xiàn)[J]. 制造業(yè)自動化, 2011(6). [2] 楊飛. 省級網(wǎng)上信訪與公眾訴求信息處理系統(tǒng)的研究和實踐[J]. 電子政務, 2008(Z1). [3] 高山. 近五年我國高校信訪工作研究綜述[J]. 浙江理工大學學報, 2013(30):969-972.