天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

使用JBoss jBPM實現(xiàn)流程訪問和執(zhí)行的授權

  當今常見的BPM趨勢是集中化整個公司或公司內大部門的BPM執(zhí)行。這意味著,單個BPM服務器(集群)運行著整個公司的許多流程定義。這種方式的挑戰(zhàn)在于,雖然BPM引擎(包括jBPM)提供了對于任務訪問的授權[1],但它們一般都不支持這些功能的授權:流程定義的查看和刪除,流程實例的啟動、結束、查看和刪除等。在這篇文章中,我們將描述如何對jBPM引擎進行擴展(基于jBPM 4.3)來實現(xiàn)這一功能。

  整體實現(xiàn)方法

  整個實現(xiàn)方式相當直接了當——對于每個流程定義引入一組可以授權的用戶/用戶組(類似任務定義),作用于定義、實例和給定流程的歷史。此外,我們還想對給定的用戶/用戶組支持多重授權級別——目前我們打算引入2個角色:“starter”和“user”。這里的“starter”是允許對流程定義/實例/歷史進行任何操作的角色,而“user”角色的權限僅限于查詢流程/歷史。

  這種方式的實現(xiàn)需要對jBPM進行以下改造:

  • 流程定義
    • 給流程定義增加流程訪問權限
  • 流程部署
    • 擴展當前的流程部署器,增加流程授權定義的解析和流程訪問列表的生成
    • 引入額外的類/數(shù)據庫表,存放每個流程定義的訪問權限
  • 流程執(zhí)行(Execution)
    • 引入已授權命令(authorized command)——要求用戶經過授權才能執(zhí)行的命令
    • 修改現(xiàn)有的jBPM中我們期望基于當前用戶證書進行授權的部分。這包括啟動、結束和刪除流程實例,以及刪除部署定義。
    • 修改現(xiàn)有的jBPM查詢,考慮現(xiàn)有用戶的證書。這包括部署和流程定義查詢、流程實例查詢,以及歷史流程實例、活動和細節(jié)的查詢。

  除了以上更改,我們還想擴展流程實例查詢,好讓用戶可以通過指定某些流程變量的值來縮小查詢結果。這種搜索的一個常見情況就是查詢“由我啟動的”流程。為了確保這種查詢總是可用,我們更改了啟動流程實例命令的實現(xiàn),顯式地把當前用戶ID加到了流程變量值的集合中。

  最后,為了支持多種用戶認證方法,我們實現(xiàn)了一個自定義的身份會話,它支持用程序來設置和訪問當前用戶的證書。其目的在于,把用戶證書(ID和參與的組)的獲得和jBPM運行時對這種信息的使用分離開來。

我們的實現(xiàn)利用了非常強大和靈活的jBPM 4的配置機制,它讓我們可以:

  • 通過擴展現(xiàn)有jBPM類,最小化了自定義代碼的數(shù)量,只實現(xiàn)我們擴展所需的額外功能
  • 將我們的擴展實現(xiàn)成可以與jBPM 4類庫一起使用的單獨jar包,無需對現(xiàn)有庫進行任何改變。

  在深入我們的實現(xiàn)細節(jié)之前,我們首先要討論一下我們大量使用的jBPM 4的配置。

  jBPM 4的配置機制

  jBPM的基礎是流程虛擬機(PVM),它建立在自定義的依賴注入實現(xiàn)之上。依賴注入由非常強大的、基于XML的配置機制控制,這種機制用于創(chuàng)建標簽和預定義接口相關的特定實現(xiàn)之間的綁定(binding)。

這種機制的核心是jbpm.wire.bindings.xml文件,它描述了jBPM PVM的主要組件,包括:

  • 基本類型
  • 對象及引用
  • 環(huán)境引用
  • Hibernate綁定
  • 會話
  • 服務
  • 部署器
  • 攔截器

  該文件是jBPM分發(fā)包的一部分。如果用戶想增加自己的綁定(binding),他可以創(chuàng)建jbpm.user.wire.bindings.xml描述它們,而不用修改jbpm.wire.bindings.xml文件。

  這兩個文件會被jBPM PVM在啟動時讀入并解析,為定義在jbpm.cfg.xml中的基礎PVM執(zhí)行(execution)配置而服務。jbpm.cfg.xml一般會包含多個部分,描述了PVM執(zhí)行的特定組件的配置。

  jBPM PVM由一組提供PVM功能的服務組成,主要的PVM服務包括:

  • 倉儲服務,提供一組查看和管理部署倉儲的方法
  • 執(zhí)行服務,提供一組查看和管理運行中流程執(zhí)行(execution)的方法。
  • 管理服務,提供一組查看和管理工作(job)的方法
  • 任務服務,提供一組查看和管理用戶任務(task)的方法。
  • 歷史服務,提供一組訪問運行中和已完成流程執(zhí)行的歷史信息的方法。

  這組可用服務和實現(xiàn)這些服務的類(使用前面說的綁定)被配置成流程引擎的上下文。

  服務執(zhí)行被實現(xiàn)成一組命令(command),它們作為服務方法執(zhí)行的一部分被調用。命令的實際執(zhí)行由命令服務控制。

命令服務在命令服務上下文中被配置成一組攔截器,實現(xiàn)橫切關注點,環(huán)繞(around)命令調用(命令執(zhí)行管線)。缺省的jBPM分發(fā)包在命令執(zhí)行管線中攜帶了以下攔截器:

  • 重試(Retry)攔截器負責重試命令執(zhí)行
  • 環(huán)境(Environment)攔截器負責在必要時把jBPM上下文注入命令執(zhí)行中
  • 事務(Transaction)攔截器負責介入命令調用的事務邊界劃分。

  攔截器是將jBPM移植到不同環(huán)境以及引入其他橫切關注點的核心機制。

  命令執(zhí)行一般會利用環(huán)境,它也是可配置的。典型的環(huán)境組件有:

  • 倉儲會話
  • DB會話
  • 消息會話
  • 定時器會話
  • 歷史會話
  • 郵件會話

  可以添加其他會話來擴展PVM的功能。

  最后,部署管理器配置允許指定一組部署器,它們依次執(zhí)行,把業(yè)務流程部署到PVM。這種方法使得擴展流程定義可以通過實現(xiàn)額外的部署步驟完成,無需覆蓋 jBPM分發(fā)包自帶的部署器。

整個PVM的架構圖1示:

圖 1 PVM架構

  在流程定義中引入授權

  我們在圖2中看到,可以給流程定義添加任意屬性。利用這種擴展選項,我們現(xiàn)在定義以下流程屬性,描述授權策略:

  • starter-users,具有“starter”角色的用戶列表
  • starter-groups,具有“starter”角色的組列表
  • user-users,具有“user”角色的用戶列表
  • user-groups,具有“user”角色的組列表

  每個屬性的值是逗號分隔的組/用戶id列表。

圖 2 流程定義模式

  此外,我們還定義了一個特殊的用戶類型——“any”和兩個用戶組——“all”和“admin”。任何用戶,不論其真實ID是什么,都是“any”用戶。任何組,不論其ID是什么,也都是“all”。最后,“admin”組的成員被認為是任意組的成員。

流程授權定義由以下規(guī)則驅動:

  • 如果user-users和user-groups都未被指定,則user-users=”all”
  • 如果 starter-users和starte-groups都未被指定,則流程用戶被額外地分配“starter”角色。

  按照這個規(guī)則,清單1中的流程可以被任何人啟動和使用。

<process package="com.navteq.jbpm" 	    key="NO_AUTHORIZATION" 	    name="Test Authorization not required"   version="1" 	    xmlns="http://jbpm.org/4.0/jpdl">	<start g="68,14,48,48" name="start"  >	<transition to="end"/></start><end g="78,383,48,48" name="end"/></process>

it知識庫使用JBoss jBPM實現(xiàn)流程訪問和執(zhí)行的授權,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产在线亚洲精品观 | 国产全部视频列表支持手机 | 午夜福到在线4国产 | 在教室做啊好大用力 | 亚洲欧美日本中文子不卡 | 欧美含羞草免费观看全部完 | 99视频久九热精品 | 国产AV国片精品无套内谢无码 | 欧洲内射XXX高清 | 无码国产成人午夜在线观看不卡 | 国产精品久久久亚洲偷窥女厕 | 护士美女照片 | 亚洲免费无码中文在线亚洲在 | 羞羞影院午夜男女爽爽免费 | 国产成人精品在视频 | 国产精品成人久久久久A伋 国产精品成人观看视频免费 | 玉娇龙续集春雪瓶txt免费阅读 | 一本久道视频无线视频 | 国产精品久人妻精品 | 国产午夜精品一区二区三区 | 高H纯肉NP 弄潮NP男男 | 日韩1区1区产品乱码芒果榴莲 | 亚洲AV久久无码精品国产网站 | 国产毛片女人18水多 | 久久WWW免费人成一看片 | 2019午夜75福利不卡片在线 | 迈开腿让我看下你的小草莓声音 | 国产免费麻传媒精品国产AV | yellow视频免费观看高清在线 | 国产成人自产拍免费视频 | 久久九九少妇免费看A片 | 国产精品久久大陆 | 婷婷午夜影院 | GAY东北澡堂激情2022 | 美女强奷到抽搐在线播放 | 国产69精品久久久久人妻刘玥 | 一品道门在线观看免费视频 | 国产电影一区二区三区 | 中文无码不卡的岛国片国产片 | 美女扒开屁股让男人桶 | 99re久久热最新地址一 |