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
主站蜘蛛池模板: av无码久久精品| 性色在线视频精品| 99热精品久久| 中文字幕 欧美日韩| 91 九色视频丝袜| 草草线在成年免费视频2| 狠狠色成人综合首页| 国产亚洲精品在天天在线麻豆 | 国产剧情一区二区| 色一情一乱一伦一区二区三区小说| 国产女人在线| 97视频免费看| 免费毛片在线| 午夜国产精品视频| 日韩欧美色综合| 青青草国产免费国产| 亚洲第一极品精品无码| 久久精品国产91久久综合麻豆自制| 波多野结衣视频网站| 日本在线免费网站| 欧美日韩免费| 中文字幕久久波多野结衣| 日韩无码黄色网站| 精品一区二区三区水蜜桃| 久久无码免费束人妻| 国产成人无码AV在线播放动漫| 91成人在线观看视频| 色综合婷婷| 国产成人精品一区二区三区| 中文字幕1区2区| 9丨情侣偷在线精品国产| 99re精彩视频| 亚洲制服丝袜第一页| 亚洲乱亚洲乱妇24p| 婷婷综合亚洲| 日韩在线中文| 久久久久国产精品嫩草影院| 在线观看免费黄色网址| 欧美三级日韩三级| 国产精品主播| 日韩精品久久无码中文字幕色欲| 亚洲第一网站男人都懂| 青青青视频免费一区二区| 亚洲色图另类| 国产一级视频在线观看网站| 国产男女XX00免费观看| 999福利激情视频| 亚洲天堂网2014| 色播五月婷婷| 国产噜噜噜| 18禁高潮出水呻吟娇喘蜜芽| 免费国产一级 片内射老| 亚洲Va中文字幕久久一区 | 国产精品污视频| 亚洲av综合网| 国产伦片中文免费观看| 亚洲一级毛片免费观看| 内射人妻无码色AV天堂| 日本一区高清| 欧美一级黄片一区2区| 99re免费视频| 国产乱人视频免费观看| 中文无码日韩精品| 国产高清在线精品一区二区三区 | 久久人搡人人玩人妻精品一| 一区二区三区在线不卡免费| 日韩欧美国产中文| 91精品啪在线观看国产| 国产日韩欧美一区二区三区在线| 欧美黄网站免费观看| 91免费精品国偷自产在线在线| 久久99精品久久久久纯品| 欧洲高清无码在线| 国产剧情一区二区| 欧美有码在线| 高清色本在线www| 国产网站免费看| 欧美黄色网站在线看| 成人福利在线观看| 女同久久精品国产99国| 亚洲国产午夜精华无码福利| 成人午夜天|