999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Activiti 和微信公眾平臺的流程管理系統的設計與實現

2019-11-06 07:19:26馬東紅鄒黎許濤李鵬孫萬信李穩
汽車實用技術 2019年20期
關鍵詞:微信用戶信息

馬東紅,鄒黎,許濤,李鵬,孫萬信,李穩

(陜西萬方汽車零部件有限公司,陜西 西安 710201)

1 前言

Activiti 是一種開源的、輕量級、可嵌入的業務流程管理軟件和工作流系統引擎,其核心結構是基于BPMN2.0 標準的。它基本實現BPMN2.0 中的執行語義解釋和圖元定義元素,在此基礎上自定義了六個擴展元素和十五個擴展屬性。Activiti 的核心組件包括:流程引擎(Activiti Engine)、 基于Web 的流程建模器(Activiti Modeler)、基于Eclipse 插件的設計器(Activiti Desiger)、基于Web 的管理控制臺(Activiti Explorer)、協作工具(Activiti Probe)和Spring集成等。其中最重要的部分就是它的流程引擎。

微信公眾平臺主要面向名人、政府、媒體、企業等機構推出的合作推廣業務。微信公眾賬號[1]被分成訂閱號和服務號,運營主體是組織(比如企業、媒體、公益組織)的,可以申請服務號,運營主體是組織和個人的可以申請訂閱號,但是個人不能申請服務號。本系統中開發中使用的是服務號。

2 數據庫部分表設計

Activiti6.0 自帶的25 張表[2](在本文不做贅述)、user表(表1)、process_list 表(表2)、fans 表(表3);具體如下:

表1 用戶表

表2 業務表單表

表3 微信粉絲表

3 Web 項目框架環境搭建

3.1 在Eclipse 中創建SpringBoot 項目[3]并且安裝Activiti 插件

具體配置為:Springboot2.0+mybatis+Maven+activiti 6.0+Eclipse

maven 依賴:

<dependency>

<groupId>org.activiti</groupId>

<artifactId>activiti-spring-boot-starter-basic</artifactId>

<version>6.0.0</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

3.2 安裝eclipse 插件Activiti Designer,在src/main/resour-ces 新建repairBill.bpmn

3.3 部署流程

這里使用RepositoryService 部署流程定義addClasspath Resource 表示從類路徑下加載資源文件,一次只能加載一個文件。

public void deployProcess(){

InputStream inputStreamBpmn = this.getClass(). get Reso-urce AsStream("/repairBill.bpmn");

InputStream inputStreamPng= this.getClass().getResource AsStream("/repairBill.png");

Deployment deployment = repositoryService

.createDeployment()

.addInputStream("LeaveBill.bpmn", inputStreamBpmn)

.addInputStream("LeaveBill.png", inputStreamPng). deploy()}

3.4 啟動流程實例

我們在做工作流的時候一定是需要將我們的業務和工作流來關聯起來的,而Activiti 給我們提供了一個便利就是Business_key,而這個字段就是專門用來存儲我們的業務關鍵字。例如我們有一個設備維修的業務,而我的維修單信息都已經編寫到數據庫的process_list 表中了,但是我怎么樣把我的維修單信息關聯到Activiti 的數據庫表中,就是用給定的Activiti 的Business_key[4],而這里有一個小技巧,例如我的javaBean 叫做repairBill,而我的請假信息的ID 為1,那么我就可以讓他寫成repairBill.1。

3.5 查詢個人任務

3.6 辦理個人任務

4 集成微信公眾平臺API

4.1 申請服務號并填寫服務配置

登錄微信公眾平臺官網后,在公眾平臺后臺管理頁面 -開發者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token 和EncodingAESKey,其中URL 是開發者用來接收微信消息和事件的接口URL。Token 可由開發者可以任意填寫,用作生成簽名(該Token 會和接口URL 中包含的Token 進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。

4.2 web 后臺和微信公眾號后臺交互

GET 請求:進行URL、Tocken 認證;

@RequestMapping(value = "/message" , method = Request Method.GET)

public @ResponseBody String lenwx(HttpServletRequest request) throws Exception {

String signature = request.getParameter("signature");//微信加密簽名

String timestamp = request.getParameter("timestamp");//時間戳

String nonce = request.getParameter("nonce");// 隨機數

String echostr = request.getParameter("echostr");// 隨機字符串

//校驗成功返回echostr,成功成為開發者;否則返回error,接入失敗

//校驗成功返回echostr,成功成為開發者;否則返回error,接入失敗

MpAccount mpAccount=new MpAccount();

String token = mpAccount.getToken();//獲取token,進行驗證

if (SignUtil.validSign(signature, token, timestamp, nonce)){return echostr;

}else {

return null;

} }

POST 請求:進行消息處理;需要對用戶關注事件進行獲取,若用戶第一次關注公眾號,則將用戶信息寫入fans 表中。系統用戶登陸web 系統將自己的open_id 維護到個人信息。

@RequestMapping(value = "/message", method = Request Method.POST)

public@ResponseBody void doPost(HttpServletRequest request,HttpServletResponse response) throws Exception {

//處理用戶和微信公眾賬號交互消息

Map<String, String> requestMap;

requestMap = MessageUtil.parseXml(request);

String fromUserName = requestMap.get("From User Name");

String toUserName = requestMap.get("ToUserName");

String msgType = requestMap.get("MsgType");

if(msgType.equals(Constants.REQ_MESSAGE_TYPE_EVE NT)){//判斷消息類型是否是事件消息類型

String eventType = requestMap.get("Event");//獲取具體的事件類型

if(eventType.equals(Constants.EVENT_TYPE_SUBSCRIB E)){ //判斷事件是否是關注事件

MpAccount mpAccount =new MpAccount();

AccountFans fans = WxApiClient.syncAccount Fans(from UserName, mpAccount);

fans.setHeadimgurl("<img src="+fans.getHeadimgurl()+"height='32' width='32'>");

AccountFans acf=accountFansService.getByOpenId(fans.getOpenId());

if(acf==null) {

accountFansService.insertSelective(fans);

} } }

4.3 發送模板消息

進入微信公眾平臺點擊模板信息模塊,直接在模板庫中選擇你需要的消息模板添加就可以了,添加之后就會在我的模板中。會有一個模板id,比如本系統用到的一個這個模板id 在我們發送消息的時候會用到。

在web 后臺中封裝模板數據對應的bean 對象,在用戶完成流程任務的時候調用鏈接,https://api.weixin.qq.com/cgi -bin/message/template/send?access_token=ACCESS_TOKEN ,向流程的下一節點辦理人發送模板信息。在這里整體思路就是用戶關注公眾號的時候,微信公眾平臺服務器會向我們的web 程序后臺發送post 請求,我們通過處理post 請求的用戶關注事件將用戶微信open_id 以及昵稱等信息寫入fans 表,再將fans 表中的open_id 維護到user 表中。用戶在進行流程審批的時候動態的選擇user 表中的用戶進行任務辦理,同時調用微信公眾平臺API 向被選擇的用戶發送流程待處理模板消息。

public static void sendTemplateMessageforwfsys(String openId,String processId,String processTypeName, String pro-cessName,String processUserName,String applyTime){

try {

MpAccount ma=new MpAccount();

String access_token=WxApi.getAccessToken(ma.get Appid(), ma.getAppsecret()).getAccessToken();

MessageTemplate messageTemplate=new Message Tem-plate();

messageTemplate.setTemplate_id("BXg68T7RIjbabWJuEg O8-R53sTciWTThiKycrMpDUT4");

messageTemplate.setTouser(openId);

messageTemplate.setTopcolor("#173177");

messageTemplate.setUrl("http://amazing.nat123.cc:29596");

Data first = new Data();

first.setValue("您好,有一條系統流程需要您進行審批。");

first.setColor("#173177");

Data keyword1 = new Data();

keyword1.setValue(processId);//流程編號

keyword1.setColor("#173177");

Data keyword2 = new Data();

keyword2.setValue(processTypeName);

keyword2.setColor("#173177");

Data keyword3 = new Data();

keyword3.setValue(processName);//標題

keyword3.setColor("#173177");

Data keyword4 = new Data();

keyword4.setValue(processUserName);//申請人

keyword4.setColor("#173177");

Data keyword5 = new Data();

keyword5.setValue(applyTime);//申請時間

keyword5.setColor("#173177");

Data remark = new Data();

remark.setValue("請及時處理,謝謝。");

remark.setColor("#173177");

TemplateData templateData = new TemplateData();

templateData.setKeyword1(keyword1);

templateData.setKeyword2(keyword2);

templateData.setKeyword3(keyword3);

templateData.setKeyword4(keyword4);

templateData.setKeyword5(keyword5);

templateData.setRemark(remark);

messageTemplate.setData(templateData);

String jsonString = JSONObject.toJSONString (message Template);

String urlStr = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token;

String result = HttpClientUtils.sendHttpPost(urlStr, json String);

} catch (Exception e) {

// TODO Auto-generated catch blocke.printStackTrace();

}}

結果如下:(圖1)(圖2)

圖1

圖2

5 結語

隨著汽車工業的迅速發展,工廠信息化以及數字化也得到迅速的發展。為了保證信息在各個部門之間實時準確的傳遞,根據我司在處理流程問題中遇到的實際情況進行分析,該文主要結合軟件行業前端主流的技術,提供了一種企業在流程以及信息傳遞方面的實時高效可行的方案。信息時代,我們希望處理問題和工作方式的思維和方式更簡單快捷。 在此也希望們本文不止提供了一個處理問題的工具,更是一種理念和方向。

猜你喜歡
微信用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
微信
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
微信
微信
微信
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 国产一区二区三区夜色| 免费观看国产小粉嫩喷水| 青青久视频| 亚洲动漫h| 欧美成人亚洲综合精品欧美激情| 亚洲国产亚综合在线区| 91九色视频网| 国产91小视频在线观看| 欧美亚洲国产日韩电影在线| 91久草视频| 欧美亚洲国产日韩电影在线| 97久久免费视频| 青青操国产视频| 欧美性爱精品一区二区三区| 久久国产高清视频| 这里只有精品免费视频| 亚洲欧洲日本在线| 青草免费在线观看| 高清国产va日韩亚洲免费午夜电影| 尤物亚洲最大AV无码网站| 中文字幕 91| 国产va免费精品| 亚洲色图在线观看| 国产在线97| 欧美第一页在线| 国产成人亚洲综合A∨在线播放| 青草视频在线观看国产| 亚洲欧美不卡中文字幕| 亚洲中文精品人人永久免费| 精品五夜婷香蕉国产线看观看| 国产欧美日韩另类精彩视频| 久久国产精品电影| 男女精品视频| 午夜老司机永久免费看片| 亚洲综合久久一本伊一区| 中文无码精品A∨在线观看不卡 | 国产美女视频黄a视频全免费网站| 国产男人天堂| 亚洲精品桃花岛av在线| 伊人丁香五月天久久综合| 国内精品久久九九国产精品| 亚洲伦理一区二区| 成人免费午间影院在线观看| 三级国产在线观看| 国产极品粉嫩小泬免费看| 亚洲成年人片| 亚洲综合在线最大成人| 久久夜色精品国产嚕嚕亚洲av| 青青青国产免费线在| 国产爽妇精品| 日韩视频免费| 青青草国产精品久久久久| 国产视频一二三区| 亚洲精品亚洲人成在线| 国产精品视频公开费视频| 国产亚洲欧美在线专区| 国产一区二区三区免费观看| 三上悠亚精品二区在线观看| 色精品视频| 亚洲精品无码日韩国产不卡| 深爱婷婷激情网| 又粗又硬又大又爽免费视频播放| 亚洲欧美激情小说另类| 草草影院国产第一页| 欧美啪啪视频免码| 久久九九热视频| 草草影院国产第一页| 中文字幕在线观看日本| 亚洲综合中文字幕国产精品欧美 | 日韩小视频在线观看| 日韩天堂网| 国产日韩欧美中文| 东京热高清无码精品| 欧美亚洲第一页| 日韩第九页| 中国精品久久| 国产靠逼视频| 国产精品一区在线麻豆| 自慰高潮喷白浆在线观看| 亚洲精品在线影院| 国产av无码日韩av无码网站| 91国内视频在线观看|