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

談Activiti工作流在新能源電站中的應用

2021-07-09 08:07:08王慧敏陳明武
山西建筑 2021年14期
關鍵詞:引擎定義新能源

袁 博 王慧敏 李 陽 陳明武

(中國電建集團西北勘測設計研究院有限公司,陜西 西安 710065)

0 引言

目前各個企業在進行數字化轉型,新能源電站作為生產單位也需要從數字化的角度看待生產過程的管理,如何減少中間環節、節約成本、簡化業務流程等,這些問題都給新能源電站的數字化轉型提出了更高的要求。但就目前而言,新能源電站的生產管理工作仍然存在權責不明、過程記錄難以跟蹤、電子文檔缺失等問題,引入Activiti工作流引擎就是為了解決上述問題,通過標準流程、過程文檔電子化使每個人權責分明,降低電站生產管理工作復雜程度,進而提高整體工作效率,加快企業數字化轉型。

1 技術應用背景

新能源電站大多地處偏遠,運行值班人員生活不便,上下班交通安全性差,也不符合企業對新能源電站“無人值班、少人值守”的管理要求。運維一體化的管理模式難以橫向對標,無法實現指標最優化。這種情況下電站的運營維護效率低下,無法滿足高效管理與高效運維電站的理念。

新能源電站生產管理系統主要實現對下屬各電站的遠程監視和統一管理,以促進子站維護質量、提高管理和運營效率。新能源電站生產管理系統中使用了Activiti工作流實現對電站維護人員的協同工作提供技術支持,實現了新能源電站生產運行科學管理、流程管理、跟蹤管理及目標管理的需求,并達到企業規范化、精細化、數字化和集成化管理的目標。

2 Activiti工作流引擎概述

在了解Activiti之前,我們先看一下什么是工作流。在計算機中,工作流屬于計算機支持的協同工作的一部分,是研究一個群體在計算機的輔助下系統工作。工作流協助解決的業務問題是:為了處理多人參與的流程問題,而使用某種預定規則自動傳遞信息或者任務。Activiti是一個執行BPMN2.0規范的開源引擎,它可以發布設計過程并通過API實現編程。Activiti工作流引入到新能源電站生產管理系統中,可以利用其提供的服務接口,全程監管新能源電站中的生產管理工作。通過Activiti工作流的規范化特性,可以使新能源電站日常業務規范化管理,更加具有條理性,很大程度降低電站日常業務出錯率。簡單來說,開發人員只需要把業務抽象為BPMN流程圖,然后將流程圖部署至Activiti工作流引擎按照流程定義逐步流轉即可,這樣不僅降低了業務的復雜程度,還減少了開發人員的工作量。

3 Activiti工作流引擎的特點

1)數據持久化。

Activiti秉承的設計思想是簡單快速。一般來說,應用軟件的性能瓶頸主要是如何快速實現與數據庫的數據交互,所以Activiti選擇MyBatis作為數據持久層框架,保證了數據交換的及時性。

2)引擎service接口。

Activiti核心API共有七個,每一項核心API都以服務接口的方式供相關開發技術人員使用。利用這些接口服務,相關技術開發人員能夠實現功能豐富、輕便且并高效的工作流應用程序,這七大核心API內容如表1所示。

表1 Activiti工作流引擎核心API

Activiti工作流引擎最核心的類是ProcessEngine,其他的核心API服務都是通過ProcessEngine獲取。Activiti服務架構如圖1所示。

3)原生支持Spring。

Activiti能夠快速集成Spring,通過Spring實現對Activiti的管理。

4 Activiti工作流引擎在新能源電站生產管理系統中的應用

本節內容以新能源電站生產管理系統中的危險點預控卡業務流程為例,對SpringBoot框架結合Activiti工作流引擎的應用進行解釋說明。

4.1 搭建流程引擎

基于Spring Initializr創建一個標準的maven工程,在pom.xml文件中添加SpringBoot,Activiti穩定版,如下所示:

項目啟動時,Activiti工作流引擎會自動創建需要的數據表,類型如表2所示。

表2 Activiti工作流引擎數據表類型

Activiti核心API的操作實際上就是對上面這些表的CRUD,而這些表數據的變化實際上代表的是整個流程的運轉。

4.2 繪制流程圖

繪制流程圖的過程就是流程定義,流程定義就是按照BPMN2.0標準去描述業務流程,比如業務的起始節點、審批節點、審批條件等等。Activiti流程圖的繪制方法有多種,如:IDEA+Activiti BPMN visualizer(插件)、Eclipse+ Activiti Designer(插件)、Activiti Modeler等,可以根據個人的運行環境自行選擇,危險點預控卡流程圖如圖2所示。

bpmn的根節點是definitions節點,在這個節點中可以定義多個流程定義,但是在實際使用過程中,definitions節點只包含一個流程定義,也就是一個流程文件只包含一個流程定義,這樣可以減小維護難度,也使得流程內容清晰明了。bpmndi:BPMNDiagram節點中定義了每個節點在流程圖上的位置坐標等信息。

4.3 部署流程圖

流程定義好以后需要部署,部署的本質就是將流程定義寫入數據庫。部署流程圖的方法有多種,下面依次介紹。

4.3.1 InputStream部署

InputStream部署的原理是通過類加載器獲取流程圖文件的數據流,構造DeploymentBuilder實例對象,再調用該實例對象的deploy方法完成流程圖部署。

public void deployInputStreamTest() {

// 獲取流程圖文件流

InputStream inputStream = this.getClass().

getClassLoader().getResourceAsStream("flow/危險點預控卡.bpmn");

String resource = "test.bpmn";

// 構造DeploymentBuilder對象并進行部署操作

repositoryService.createDeployment()

.addInputStream(resource, inputStream)

.deploy();

}

4.3.2 classpath部署

public void deployClasspathTest() {

// 流程圖文件位置

String resource = "flow/危險點預控卡.bpmn";

// 構造DeploymentBuilder對象并進行部署操作

repositoryService.createDeployment().addClasspath

Resource(resource).deploy();

}

4.3.3 字符串部署

字符串部署是將文本內容直接作為來源,把文本內容轉化為字節流后進行部署。

public void deployStringTest() {

// 字符串

String resource = "

encoding=”UTF-8”?>...

";

// 構造DeploymentBuilder對象并進行部署操作

repositoryService.createDeployment()

.addString("test.bpmn", resource)

.deploy();

}

4.3.4 ZipInputStream部署

以上方法都是針對單個流程圖文件部署,如果需要一次部署多個流程圖文件則需要將全部文件打包為zip或者bar格式的壓縮文件,然后再對其進行部署。

public void deployZipTest() {

// 獲取壓縮文件流

InputStream inputStream//壓縮文件流

ZipInputStream zipInputStream = new ZipInputStream(inputStream);

// 構造DeploymentBuilder對象并進行部署操作

repositoryService.createDeployment()

.addZipInputStream(zipInputStream)

.deploy();

}

4.4 啟動流程

啟動流程表示開始一次具體的業務流程,比如請假流程,啟動流程表示發起一個新的請假申請,而開始的業務流程就會根據已經部署的流程定義流轉。

public ProcessInstance submitApply(ActivitiEntity activiti) {

// 設置啟動流程的人員ID identityService.

setAuthenticatedUserId(activiti.getApplicant());

// 啟動流程時設置業務 key

ProcessInstance instance = runtimeService.startProcessInstanceByKey(activiti.getProcessKey(), activiti.getBusinessKey(), activiti.getProcessParams());

// 下一節點處理人待辦事項

activiti.setInstanceId(instance.getProcessInstanceId());

bizTodoItemService.insertTodoItem(activiti);

return instance;

}

其中,ActivitiEntity實體類部分代碼如下:

public class ActivitiEntity extends BaseEntity {

/** 申請事項 */

private String itemName;

/** 申請內容 */

private String itemContent;

/** 申請人 */

private String applicant;

/** 流程實例ID */

private String instanceId;

/** 流程定義key */

private String processKey;

/** 創建人名稱 */

private String creatorName;

/** 流程實例狀態 1 激活 2 掛起 */

private String suspendState;

/** 流程的業務 key 業務流轉 id:統一由業務 key+ id, eg: firstWorkTicket_1001 */

private String businessKey;

private String businessId;

}

上述實體類屬性最關鍵的就是businessKey(業務標識),businessKey是Activiti和業務系統整合時的連接點,businessKey相當于業務表中唯一標識。

4.5 待辦任務查詢

流程啟動后,各個任務(節點)的負責人就可以查詢自己當前需要處理的待辦任務,部分關鍵代碼如下:

public void listPersonalTodoTasks() {

// 任務負責人名稱

String username = "jack";

List taskList = taskService.createTaskQuery()

// 危險點預控卡

.processDefinitionKey("dangerPrecontrolcCard")

// 任務負責人名稱

.taskAssignee(username)

.list();

for (Task task : taskList) {

log.info("流程實例id:" + task.getProcessInstanceId() + ",任務id:" + task.getId() + ",負責人:" + task.getAssignee() + ",名稱:" + task.getName());

}

}

4.6 任務處理

任務負責人查詢待辦任務,選擇任務進行處理,完成對應(節點)任務,部分關鍵代碼如下:

public void completeTask() {

// 任務id

String taskId = "3859";

// 完成任務

taskService.complete(taskId);

}

5 結語

新能源電站生產管理系統是完全基于光伏電站的實際業務管理需求而設計的,采用了SpringBoot框架結合Activiti工作流引擎在新能源電站生產管理系統中完成了設計與實現,為新能源電站開展運行管理、設備管理、檢修管理、安全管理等提供信息服務和業務支撐平臺,提高生產效率和運營效率以及安全可靠性。然后詳細寫了基于Activiti工作流的新能源電站生產管理業務流程模塊的實現。本系統使新能源電站業務流程能輕松進行業務跟蹤,解決了新能源電站生產管理工作中權責不明、過程記錄難以跟蹤、電子文檔缺失等問題,實現生產記錄全過程跟蹤,加強新能源電站生產管理工作的規范化,也使新能源電站業務能在網上輕松處理,使新能源電站業務的自動化和無紙化辦公成為現實。改變了以往傳統的辦公模式,減輕了工作人員的工作壓力,為企業各部門工作人員之間工作上的溝通提供了一種新的解決方案,有效提升電站運維人員的工作效率,降低了新能源電站行業的生產成本,進一步加快新能源電站的數字化轉型。

猜你喜歡
引擎定義新能源
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
買不買新能源汽車
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
“新能源門”的背后
風能(2015年4期)2015-02-27 10:14:36
順應新能源發展趨勢
風能(2015年4期)2015-02-27 10:14:34
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
One Engine Left只剩下一個引擎
主站蜘蛛池模板: 99视频在线看| 午夜电影在线观看国产1区| 91人妻日韩人妻无码专区精品| 91精品啪在线观看国产60岁| 国产综合色在线视频播放线视| a级毛片视频免费观看| 一级毛片在线免费看| 日韩福利视频导航| 欧洲精品视频在线观看| 久久久久亚洲精品成人网| 22sihu国产精品视频影视资讯| 国产成人三级在线观看视频| www中文字幕在线观看| 欧美亚洲日韩中文| 亚洲熟女中文字幕男人总站| 国产精品国产三级国产专业不| 国产高清在线丝袜精品一区 | 欧美有码在线观看| 国产高清精品在线91| 不卡无码h在线观看| 毛片久久久| 国产一区二区三区日韩精品 | 在线视频亚洲色图| 99er这里只有精品| 狠狠色丁香婷婷| 国产91色| 成人亚洲视频| 中文字幕 91| 男人天堂伊人网| 国产成人精品综合| 伊人色综合久久天天| 中文字幕调教一区二区视频| 国产午夜人做人免费视频| 日本一区高清| 九九久久99精品| 国产精品99久久久久久董美香| 亚亚洲乱码一二三四区| 中文字幕永久在线观看| 午夜久久影院| 亚洲男人的天堂久久精品| 久久精品嫩草研究院| 91美女视频在线| 亚洲AV无码一二区三区在线播放| 亚洲日韩久久综合中文字幕| 456亚洲人成高清在线| 高潮毛片免费观看| 国产极品美女在线| 欧美在线观看不卡| 国产成人高清在线精品| 国产自产视频一区二区三区| 成人亚洲国产| 人妻丰满熟妇AV无码区| 日韩欧美国产另类| 熟女成人国产精品视频| 国产网站一区二区三区| 国产丝袜第一页| 97人人做人人爽香蕉精品| 高清不卡毛片| 日本午夜影院| 久久综合九九亚洲一区| 伊人久久大线影院首页| 欧美日本激情| 免费国产黄线在线观看| 欧美一区二区三区欧美日韩亚洲| 国内熟女少妇一线天| 国产97区一区二区三区无码| 中文无码影院| 无码又爽又刺激的高潮视频| 亚洲日本www| 美女一级免费毛片| 国产精品思思热在线| 女人18一级毛片免费观看| 久久精品无码一区二区日韩免费| 视频在线观看一区二区| 国产欧美日韩综合在线第一| 亚洲三级色| 制服丝袜 91视频| 五月婷婷精品| 四虎永久免费地址| 国产女人爽到高潮的免费视频| 久久综合丝袜日本网| 国产亚洲精品91|