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