者:李玉亮
JDEasyFlow是企業(yè)金融研發(fā)部自研的通用流程編排技術(shù)組件,適用于服務編排、工作流、審批流等場景,該組件已開源(https://github.com/JDEasyFlow/jd-easyflow),目前在部門的內(nèi)部業(yè)務系統(tǒng)和科技輸出系統(tǒng)中廣泛應用,其他部門也有使用。
它的特點是簡單、靈活、易擴展,開發(fā)人員一般30分鐘可入門上手,半天可掌握其原理。它分為一個核心模塊和若干擴展模塊,模塊之間松耦合,開發(fā)使用時可按需選擇、快速集成、漸進式應用,同時支持JSON內(nèi)置規(guī)范和BPMN規(guī)范。它的實現(xiàn)原理也有其特色,后面有介紹。
支持順序流轉(zhuǎn)、條件流轉(zhuǎn)、循環(huán)流轉(zhuǎn)等。
??
支持腳本節(jié)點、用戶節(jié)點和消息節(jié)點。
??
?腳本節(jié)點:節(jié)點執(zhí)行時運行一段代碼腳本
?用戶節(jié)點:根據(jù)用戶的操作指令觸發(fā)節(jié)點執(zhí)行
?消息節(jié)點:接收消息后觸發(fā)節(jié)點執(zhí)行
支持串行執(zhí)行、并行執(zhí)行、串并組合執(zhí)行等。
??
支持單次交互一次執(zhí)行多節(jié)點、多次交互一次執(zhí)行一節(jié)點、多次交互一次執(zhí)行多節(jié)點等。
??
JDEasyFlow支持子流程的場景,可將把復雜的流程節(jié)點拆分為子流程,便于業(yè)務邏輯抽象。
??
JDEasyFlow提供了流程任務審批的能力;常用的審批、撤銷、駁回、會簽、加簽等功能都可支持;內(nèi)置了簡單的動態(tài)表單。既支持從頁面發(fā)起和操作流程任務,也支持API的方式,京東OA審批系統(tǒng)也有對接。
??
JDEasyFlow的功能架構(gòu)如下圖,功能模塊之間松耦合, 開發(fā)時可按需選擇、快速集成、漸進式應用。最簡單的使用方式為只在業(yè)務應用端引入jar包使用流程引擎。如果需要流程可視化功能,可集成BPMN規(guī)范模塊,如果還需要流程實例持久化、流程定義持久化等更豐富功能,則可以集成其他相關(guān)模塊。
??
JDEasyFlow的核心模塊,此模塊提供了基于JSON格式的JDEasyFlow規(guī)范進行流程編排的能力,其他模塊均基于該模塊擴展,相當于流程執(zhí)行的發(fā)動機、CPU。該功能模塊為獨立組件,無數(shù)據(jù)庫依賴,應用中引入jar包便可使用。
提供了基于BPMN規(guī)范進行流程定義和可視化的能力,流程可視化基于[bpmn-js](https://bpmn.io/),其本質(zhì)為提供了將BPMN格式流程定義轉(zhuǎn)換為JDEasyFlow格式的能力。該模塊為獨立組件,僅依賴流程引擎模塊,無數(shù)據(jù)庫和服務依賴,應用中引入jar包便可使用。
目前可支持常用的BPMN元素:
?任務:腳本任務、用戶任務、消息任務
?事件:開始事件、結(jié)束事件、消息接收事件
?網(wǎng)關(guān):排他網(wǎng)關(guān)、并行網(wǎng)關(guān)、包容網(wǎng)關(guān)
??
流程定義模塊支持流程定義的中心化、版本化管理,流程實例模塊支持流程實例的持久化和生命周期管理。該功能依賴數(shù)據(jù)庫,有服務端和ERP管理端。
支持任務生成、任務分配等功能,常用的審批、撤銷、駁回、會簽、加簽等功能都可支持。該功能依賴數(shù)據(jù)庫,有服務端和ERP管理端。
JDEasyFlow的完整系統(tǒng)架構(gòu)如下,主要有三個端:業(yè)務應用端、流程服務端、流程管理端,三個端可部署在單體應用中,也可分開部署。
??
· 關(guān)系型數(shù)據(jù)庫(如Mysql)
· 緩存(如Redis或R2M)
· 服務通訊框架(如Java API調(diào)用或Http調(diào)用或JSF調(diào)用)
數(shù)據(jù)庫數(shù)據(jù)模型比較簡單清晰,見下圖:
??
· 如果僅是服務編排場景,則流程的執(zhí)行僅依賴內(nèi)存和CPU,并且是在流程客戶端執(zhí)行,性能上依賴于客戶端服務器的性能,普通筆記本實測1秒可執(zhí)行一個流程請求的1w+個節(jié)點,1秒可執(zhí)行1萬+次含1個節(jié)點的流程請求
· 如果需要流程狀態(tài)管理和流程持久化功能,流程引擎在執(zhí)行時會到流程服務端查詢和保存流程實例和流程節(jié)點的狀態(tài),性能上主要依賴于數(shù)據(jù)庫的查詢和插入效率
· 對于流程任務審批功能,流程的任務審批流轉(zhuǎn)是在服務端執(zhí)行,一方面取決于流程服務端的計算性能,另一方面同樣取決于數(shù)據(jù)庫的查詢和插入效率
· 流程引擎屬于無狀態(tài),可隨應用實例線性伸縮
· 流程服務端應用實例支持線性擴展
· 流程數(shù)據(jù)庫可通過分庫分表的方式支持大數(shù)據(jù)量的增長
在具體實踐中,建議部署統(tǒng)一的流程中心(見下圖),對流程定義統(tǒng)一管理。各系統(tǒng)的應用只需集成流程客戶端jar包進行流程節(jié)點開發(fā)和流程調(diào)用便可。如果系統(tǒng)只使用任務審批的功能,則只需要通過API和消息與流程中心交互便可。
??
在源碼的test目錄下有quickstart測試用例(easyflow\easyflow-flow\src\test\java\com\jd\easyflow\flow\quickstart\QuickStartTest.java),可直接運行或調(diào)試以了解使用方式和運行原理。具體實踐步驟如下:
1、代碼中引入easyflow-flow jar包,以maven為例:
<dependency>
<groupId>com.jd.easyflow</groupId>
<artifactId>easyflow-flow</artifactId>
<version>{替換為最新版本}</version>
</dependency>
2、編寫流程定義文件,以node001->node002→node003的執(zhí)行順序為例:
{"id": "quickstart_001", "name": "Quick Start 001",
"nodes": [
{"id": "node001","name": "Node001","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart001Node01Action()"},"start": true,"post": {"to": "node002"}},
{"id": "node002","name": "Node002","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart002Node01Action()"},"post": {"to": "node003"}},
{"id": "node003","name": "Node003","action": {"createExp": "new com.jd.easyflow.flow.quickstart.QuickStart003Node01Action()"}}
]
}
其中QuickStart001Node01Action等為java節(jié)點動作類。完整的流程定義配置項可見: https://github.com/JDEasyFlow/jd-easyflow/wiki/Flow-engine-usage (公網(wǎng))
3、編寫應用啟動時加載流程引擎的代碼
FlowEngineImpl flowEngine=new FlowEngineImpl();
flowEngine.setFlowPath("classpath:flow/quickstart/quickstart_001.json");
flowEngine.init();
Spring環(huán)境可直接定義FlowEngineImpl bean.
4、編寫具體流程調(diào)用執(zhí)行的代碼
FlowParam param=new FlowParam("quickstart_001");
FlowResult result=flowEngine.execute(param);
完整測試用例的執(zhí)行結(jié)果打印如下:
[main ] INFO FlowEngineImpl - Start parsing definition files:easyflow-flow/target/test-classes/flow/quickstart/quickstart_001.json
[main ] INFO FlowEngineImpl - SART EXECUTE FLOW, flowId:quickstart_001 nodeIds:null
[main ] INFO BaseFlowRunner - EXECUTE NODE:node001
[main ] INFO QuickStart001Node01Action - Execute Node 001
[main ] INFO BaseFlowRunner - NEXT NODES:node002
[main ] INFO BaseFlowRunner - EXECUTE NODE:node002
[main ] INFO QuickStart002Node01Action - Execute Node 002
[main ] INFO BaseFlowRunner - NEXT NODES:node003
[main ] INFO BaseFlowRunner - EXECUTE NODE:node003
[main ] INFO QuickStart003Node01Action - Execute Node 003
[main ] INFO BaseFlowRunner - NEXT NODES:
[main ] INFO QuickStartTest - Execute finish, current node is:node003
打開easyflow-flow-bpmn/BPMNDesigner.html流程設(shè)計器. 點擊導入按鈕,導入easyflow-flow-bpmn/src/test/resources/flow/quickstart/quickstart_001.bpmn文件,可在設(shè)計器中看到和以上JSON定義等價的BPMN流程定義.
??
代碼集成使用時只需要將FlowEngineImpl的flowParser設(shè)置為BpmnFlowParser.
以上只是流程引擎和BPMN模塊的簡單使用示例,JDEasyFlow還包含其他模塊、可支持很多的配置項和使用場景,更多使用可見最后的對接使用介紹.
目前市面上的流程編排組件基本都是基于圖(邊和頂點)結(jié)構(gòu)的,而本組件是參考了計算機指令執(zhí)行模型而實現(xiàn),借鑒了程序計數(shù)器的實現(xiàn)原理,引擎內(nèi)部通過類似程序計數(shù)器(PC)的待執(zhí)行節(jié)點棧來維護后繼節(jié)點;可以理解為是一種高級業(yè)務編程語言,它同時也是圖靈完備的。
流程引擎核心模型名詞只有一個:節(jié)點(Node),節(jié)點的功能為執(zhí)行邏輯并輸出后續(xù)節(jié)點 。
??
開發(fā)態(tài)可定義有限的節(jié)點,通過每個節(jié)點與其后續(xù)節(jié)點連接形成有向圖;運行態(tài)按規(guī)則邏輯進行節(jié)點流轉(zhuǎn),支持并行執(zhí)行,支持順序、條件或循環(huán),支持fork-join。
??
概念:
?流程:一個業(yè)務流程的抽象
?節(jié)點:流程的組成單位,一個節(jié)點能夠執(zhí)行節(jié)點動作同時可返回后繼節(jié)點
節(jié)點內(nèi)部構(gòu)件:
節(jié)點內(nèi)部構(gòu)件的組成是可自定義的,流程引擎提供了缺省實現(xiàn),其內(nèi)部構(gòu)件包括了前處理器(PreHandler)、節(jié)點動作(NodeAction)、后處理器(PostHandler)
??
?前處理器:判斷該節(jié)點是否可以執(zhí)行動作
?節(jié)點動作:真實的業(yè)務功能處理
?后處理器:負責計算后續(xù)節(jié)點
流程引擎執(zhí)行邏輯
流程引擎有一個或多個流程觸發(fā)節(jié)點,流程觸發(fā)后執(zhí)行如下邏輯:
1. 初始化流程上下文
2. 得到流程起始節(jié)點ID,放入執(zhí)行棧
3. 如果執(zhí)行棧為空,則返回,否則執(zhí)行當前節(jié)點
1) 預檢查
2) 執(zhí)行Action
3) 計算后繼節(jié)點ID并返回
4. 將后繼節(jié)點放入執(zhí)行棧,從棧中取出待執(zhí)行節(jié)點,跳到第3步
因此JDEasyFlow整體的特色為簡單:
?模型簡單:核心模型概念就是節(jié)點的流轉(zhuǎn)
?擴展簡單:提供了監(jiān)聽器、過濾器功能,方便橫向切面;節(jié)點支持自定義實現(xiàn)
?定義簡單:只需要通過JSON進行節(jié)點流轉(zhuǎn)邏輯配置便可,也支持BPMN格式
?運行簡單:代碼調(diào)用流程引擎,傳入流程ID和業(yè)務參數(shù)便可
?使用簡單:引入組件包便可使用,比較輕量
??
理論上JDEasyFlow可滿足任何流程場景,它主要可解決三類問題:
?流程可編排:將業(yè)務流程抽象為軟件流程,保證軟件是現(xiàn)實的真實反映;不同場景可定義不同流程,且流程易修改
?功能松耦合:將業(yè)務節(jié)點抽象為軟件流程節(jié)點,一方面實現(xiàn)功能的松耦合,另一方面實現(xiàn)節(jié)點的可復用
?流程可視化:所見即所得,方便業(yè)務產(chǎn)品人員和軟件研發(fā)人員基于同一語言的交流,也便于流程監(jiān)控
在實際軟件系統(tǒng)開發(fā)過程中,如果有如下訴求,可考慮使用流程編排:
?業(yè)務流程是有明顯的多個節(jié)點組成
?希望流程可靈活變更
?業(yè)務流程級別比程序流程高一層,在編程語言級別難以聚合和治理(如一個流程即需要前臺操作,又有外系統(tǒng)參與,又有后臺操作,在實現(xiàn)上入口分散)
JDEasyFlow的所有文檔可見: https://github.com/JDEasyFlow/jd-easyflow/wiki
歡迎大家對接使用,有相關(guān)使用問題可聯(lián)系: liyuliang5@jd.com
西班牙生活首先需要合法居留,但是剛到西班牙的小伙伴常常陷入不知道從哪里獲得信息的困境,小金毛這里從居留及其他證件辦理預約起步,向大家逐步介紹在西生活所需證件及如何獲得它們。
首先我們需要保存有用的網(wǎng)址:
1. 西班牙居留/證件預約入口
https://sede.administracionespublicas.gob.es/icpplus/index.html
這個網(wǎng)址是專門用于預約的,全西班牙的預約都從這一個口進,進入后會有地區(qū)選擇,大家可自行選擇自己所在的城市。以馬德里為例,選定后會提示用戶這一居留預約主要涉及:
續(xù)學生居留
申請長期居留
續(xù)工作居留
續(xù)家庭居留
返鄉(xiāng)證預約
雖然西班牙網(wǎng)上辦公平臺實際上還有一套可以簡化申請/更換居留的全線上操作流程,但是線上操作流程需要當事人辦理電子身份證,所以這里暫且不提,只講解傳統(tǒng)人工線下居留更換如何操作。
選定預約城市/大區(qū)后自然會跳出“預約事項”一欄讓大家選擇,這里選取部分華人常用的預約事項加以翻譯:
Acceso A 1a Aut. de Residencia de Larga Duración y Larga Duración UE
第一次西班牙/歐盟長期居留申請
Autorización de Residencia de Menores Nacidos en Espa?a, Hijos de Residentes
西班牙出生的未成年人居留申請/居留持有者子女居留申請
Autorizaciones de Regreso
返鄉(xiāng)證申請
Duplicado de Tarjeta de Identidad de Extranjero
外國人身份證補辦申請
Prorroga de Estancia por Estudios
學生居留更換(延期)
Reagrupación Familiar
家庭團聚
Renovaciones de Autorizacion de Residencia con Trabajo
工作居留更換
Toma de Huellas (Expedición de Tarjeta) y Renovación de Tarjeta de Larga Duración
長期居留更換及按手印(長期居留發(fā)放最后一步)
2. 幾個需要注意的tips
首先留學生朋友會發(fā)現(xiàn),雖然上面給出的網(wǎng)站上有“學生居留更換”這個選項,但是實際上在一些城市已經(jīng)啟用網(wǎng)上預約更換了,可以直接攜帶相關(guān)材料,不用預約,前往材料遞交部門即可,比如馬德里。
網(wǎng)上更是給出了非常詳盡的遞交地址指導:
小金毛也建議大家不要一擁而上都前往某一個地點遞交材料。選擇離自己住家較近的市政府遞交材料也是很好的選擇,一則可以避開居留遞交高峰(例如開學季),二則居留審批速度也可能受影響。
有關(guān)學生居留多說一句,實際上我們拿到的“學生居留”只相當于“暫住證”,西文表現(xiàn)更為明顯,學生居留是ESTANCIA de estudiante,而真正的居留是RESIDENCIA,所以不少機會需要合法Residencia的時候,學生居留實際上并沒有用處。
3. 預約進行中
出去學生居留更換這類已經(jīng)棄用預約系統(tǒng)的手續(xù),其他手續(xù)在網(wǎng)站上可以直接預約,預約進行時我們需要注意網(wǎng)站上跳出的提示。這里以家庭團聚申請為例:
一般這類信息跳出來的時候,小金毛建議大家先把需要下載的表格(比如這里注明的EX-02表格)下載保存起來。如果怕自己忘記,最好整個頁面直接截圖保存。一切確認之后,點擊右下方的Aceptar按鈕繼續(xù)操作。
之后的步驟基本相同,填寫個人資料,家庭信息,工作情況,住址,申請理由等等。這里仍舊給大家一些小提示,在填寫西班牙人出具的表格時我們常會遇到姓名不知道哪個在前哪個在后的情況,這種情況下只需要記住,將姓大寫即可。例如中文名為王明,如果習慣性先寫姓了,可以寫作WANG Ming,如果按照國外方式將姓放在后面了,可以寫作Ming WANG。這樣對方一定知道大寫拼寫的才是姓氏,也就不會搞混了。
4. 居留辦理查詢
說到居留辦理查詢,大家還需保存一個網(wǎng)址:
https://sede.administracionespublicas.gob.es/infoext2/jsp/indexnie.jsp
這一網(wǎng)址上可通過居留遞交日期或是遞交序列號查詢居留辦理進度。進入網(wǎng)址后按照提示直接輸入相關(guān)信息即可查詢。如果不記得自己遞交居留更換的時間,可以找出當時拿回的居留遞交單,上面一般會蓋/貼有當日的日期簽章。西班牙居留更換耗日時長,經(jīng)常是一年一換,一換半年到一年,在這期間如果還想出鏡西班牙就需要辦理返鄉(xiāng)證,有關(guān)返鄉(xiāng)證的辦理細節(jié)可以參考我們之前的文章。
(本文已授權(quán)新歐洲-西班牙首發(fā),如需轉(zhuǎn)載,請注明來源。)
歷認證的認證范圍
1. 在外國大學或其它高等教育機構(gòu)攻讀正規(guī)課程所獲相應學歷學位證書或高等教育文憑;
2. 在經(jīng)中國國務院教育行政部門批準的中外合作辦學機構(gòu)(項目)學習所獲國(境)外學歷學位證書,在經(jīng)中國各省、自治區(qū)、直轄市人民政府審批,并報中國國務院教育行政部門備案的高等專科教育、非學歷高等教育的中外合作辦學機構(gòu)(項目)學習所獲國(境)外高等教育文憑;
3. 在中國澳門特別行政區(qū)及臺灣地區(qū)大學或其它高等教育機構(gòu)攻讀正規(guī)課程所獲相應學歷學位證書或高等教育文憑。在中國香港特別行政區(qū)大學或其它高等教育機構(gòu)攻讀正規(guī)課程所獲學士以上(含學士)層次的學歷學位證書
哪些證書不在學歷認證的范圍內(nèi)
1. 參加外語培訓所獲得的結(jié)業(yè)證書;
2. 進修人員、訪問學者的研究經(jīng)歷證明和博士后研究證明;
3. 預科證明;
4. 榮譽學位證書、榮譽稱號;
5.未經(jīng)中國政府相關(guān)教育行政部門批準的辦學機構(gòu)(項目)頒發(fā)的國(境)外學歷學位證書或高等教育文憑;
6. 通過函授、遠程教育及網(wǎng)絡教育等非面授學習方式獲得的國(境)外學歷學位證書或高等教育文憑;
7. 各類職業(yè)技能或職業(yè)資格證書。
【特別補充】:教育部明確留學生受疫情影響,通過網(wǎng)絡在線學習部分課程,不影響學歷認證。詳情請見下文:
“ 最近有很多學生表示疑惑,本該出國讀書,由于受疫情影響只能在國內(nèi)上網(wǎng)課,導致自己的境外停留時間達不到要求,這樣是否會影響將來的學位學歷認證?
中國教育部于2020年12月22日舉行新聞發(fā)布會,教育部相關(guān)負責人表示,全日制留學生因疫情在國內(nèi)上網(wǎng)課,不作為影響其學位學歷認證結(jié)果的因素。
據(jù)教育部國際合作與交流司司長、港澳臺辦公室主任劉錦介紹,新冠肺炎疫情的全球大流行不僅給正常的教育合作交流按下“暫停鍵”,而且給跨國(境)流動的各類學生、教師的健康以及學習生活和工作帶來嚴峻挑戰(zhàn)。面對疫情,教育部、地方教育行政部門、各級各類學校以及駐外使領(lǐng)館的教育部門迅速行動、全力應戰(zhàn)。
針對很多在讀留學生擔心在國內(nèi)上網(wǎng)課是否會影響自己將來學位學歷認證的問題,劉錦明確表示不會影響。
教育部留學服務中心主任程家財補充說明此前辦理學位學歷的認證標準和辦法并沒有改變。該政策僅限于對全日制學生,僅限于疫情。
其實,早在2020年4月3日,教育部留學服務中心已發(fā)出通知,針對疫情影響下留學生學位認證做出說明。
*資料來源中國教育部留學服務中心。
所需材料(中國大陸學生)
1、需要認證的國(境)外學歷學位證書或高等教育文憑(以下簡稱文憑證書)。上傳文件格式為:pdf格式,不大于5M。
2、國(境)外學習期間使用的護照(通行證)及簽證(簽注)。上傳文件格式為:jpg格式,每張不大于1M。
3、本人近期標準證件照片一張,底色不限。上傳文件格式為:jpg格式,不大于1M。
4、按留服中心要求填寫并簽署的文憑證書核查授權(quán)聲明。上傳文件格式為:pdf格式,不大于1M。
5、在讀證明
國外通用版
港澳臺地區(qū)版
國外通用版下載地址:
http://zwfw.cscse.edu.cn/cscse/resource/cms/article/414610/452751/2020082115211020249.pdf
港澳臺地區(qū)版下載地址:
http://zwfw.cscse.edu.cn/cscse/resource/cms/article/414610/452751/2020082115201511669.pdf
6. 其他相關(guān)材料。上傳文件格式為:jpg格式,每張不大于1M。
? 詳細材料要求:
http://zwfw.cscse.edu.cn/cscse/lxfwzxwsfwdt2020/xlxwrz32/sqcl/ndjm/442412/index.html
學歷認證的申請流程
好消息!為了方便辦理學歷認證的同學,目前申請學歷認證的手續(xù)已經(jīng)大大簡化。
同學們只需要在線上傳認證材料的電子版,并支付相應費用,就可以進入認證審批程序,不需要親自到認證機構(gòu)遞交紙質(zhì)材料啦!
辦理流程一覽
1
第一步:注冊賬號
登錄“教育部留學服務中心網(wǎng)上服務大廳(試運行)” 頁面,注冊個人賬戶
系統(tǒng)入口:
https://zwfwbl.cscse.edu.cn/toLogin?sysType=front
2
第二步:登錄
使用注冊的賬戶密碼信息登錄賬號
3
第三步:辦理
添加認證辦理申請
4
第四步:填寫信息
按官網(wǎng)提示提交信息
5
第五步:上傳材料
材料可通過系統(tǒng)上傳電子版,也可以到北京檢驗機構(gòu)遞交材料。
6
第六步:支付費用
學歷認證費用為360元/份
使用帶有“銀聯(lián)”標識的銀行卡(借記卡或信用卡)進行支付
7
第七步:查詢進程
遞交認證申請后,可以經(jīng)常登錄認證系統(tǒng)去查詢最新的認證進度及狀態(tài),看看是否還需要補充其他材料。
步驟:登錄系統(tǒng)-點擊右上角“用戶中心”-“我的申請”
8
第八步:領(lǐng)取結(jié)果
當申請人在系統(tǒng)中看到“認證結(jié)果”后,即可點擊查看證書
認證結(jié)果將以電子證照形式顯示,不再提供認證結(jié)果。
學歷認證并不是強制要求辦理的,但是通常國內(nèi)的大型企業(yè)和事業(yè)單位招聘時都需要查看,所以建議同學們畢業(yè)后盡早辦理。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。