馳騁工作流引擎設計系列08 接收人規則設計

第1節. 關鍵字

馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow

第1節. 接收人規則設計

接收人員規則是節點屬性的一個重要設置,是確定當前接受人範圍的規則,該規則有多種方式組成。

1.1.1: 概要說明

關鍵字:ccbpm節點訪問規則 接收人規則。

相關功能:訪問規則處理內容。

節點屬性配置:如下圖:

image

功能入口

解釋說明:就是下一步工作人員的接受人範圍處理規則。A運動到B,如何確定B的處理人範圍。根據不同的業務場景,ccbpm提供瞭如下幾種模式,您可以根據自動不同的業務背景設置自己的業務規則。

說明:

1, 下列設置類型,都設置當前節點作用於下一步節點。

2, 每一種類型,都有路徑自動記憶功能,所說自動記憶功能是當節點第一次向下一個節點投遞時,它把要投遞的人記錄下來。

如果您執行了分配系統就把分配的人員,做爲接受人員計算.

可以設置的投遞的類型:

爲了更好的說明該規則,cc爲我們提供了一個流程測試案例,如下圖:

image

該案例詳盡的設置了各個模式的方法,請打開相關的節點屬性,對照節點的名稱,運行該流程。

1.1.2: 屬性字段存儲

該規則是一個節點字段屬性,當然要存在節點表裏,WF_Node

image

1.1.3: 開始節點的接受人規則設計

開始節點是一個特殊的節點,是整個流程的入口,一個流程只有一個開始節點。

開始節點的訪問規則是爲了確定那些人可以發起該流程。

開始節點的訪問規則與其他節點也不相同,如下圖。

image

我們從規則名稱的字面意思不難理解,如何爲開始節點綁定可以發起的工作人員。

1.1.4: 中間節點的接受人規則設計
1.1.4.1: 按組織結構結算

本章節詳細的介紹了每種訪問規則在不同場景下的應用,用戶可以根據不同的情況使用不同的訪問規則。

1.1.4.1.1: 按崗位智能計算

設置方法: 在下一個節點上的節點屬性裏,設置節點崗位。這是默認的投遞規則,他是在下一個節點設置崗位時按照崗位計算. 他的計算方式,首先按照當前操作員的部門範圍計算。如果該操作員部門下沒有這個工作崗位的人員,CCBPM就會把當前操作員的部門級次提高一個級別,在尋找,依次計算。理解了這個算法,您就不難理解爲什麼,本部分的業務,只能讓本部門的經理審批了.

image

舉例說明:一個省機關下面有n個縣,n個市,n個縣. n個所. 一個所員受理人員的業務,只能讓自己的所長審批,所長的業務只能投遞到本區縣的相關業務部分審批,而非其它區縣業務部分審批。

這就是崗位的權限與部門權限的交叉形成的被投遞的人員集合. 這就是ccbpm經常說的。

崗位:表示能做什麼事情。部門: 表示能做那裏的事情。崗位+部門: 表示一個操作員能做那裏的那些事情。

1.1.4.1.2: 按節點綁定的部門計算

設置方法:在當前節點上的節點屬性裏,設置節點崗位.

CCBPM會按照您指定的部門下面的人員,進行投遞, 就是這個n個部門下面都可以接受這個工作. 這個類於發送郵件的按照郵件組進行發送。

image

1.1.4.1.3: 按節點綁定的人員計算:

節點綁定那些人員,該系統就會發送給這些人,如下圖設置。

image

1.1.4.1.4: 按綁定的崗位與部門交集計

設置方式:在節點崗位,節點部門都設置。

運行方式:ccbpm會取既具備此崗位集合的又具備此部門集合的人員,做爲本節點的接受人員。

image

1.1.4.1.5: 按綁定的崗位計算並且以綁定的部門集合爲緯度

該場景用的較少,不說明了。

1.1.4.1.6: 按指定節點的工作人員或者指定字段人員的崗位計算

應用場景:爲一個單位設置一個設備維修流程,此單位下分好多部門,有一個IT部門負責計算機設備維修。每個部門的成員如果有設備維護的需要,首先填寫一個單子向這個IT部門的受理人員發送詳細的故障說明。IT受理人員接受到此請求後,根據情況發送到該發起人的部門領導那裏去。

這是簡單的三個步驟,發起-》IT部門受理-》發起的部門負責人審批。第一步驟基層人員發起,第二步驟是IT受理崗人員受理。第三個步驟中層領導審批。在第三個節點訪問規則就是按按指定節點崗位計算。因爲如果按崗位計算在第二步驟就要發送給IT部門經理審批而非發起人的部門經理審批了。默認的按崗位計算就是按上一個節點的崗位計算,現在的應用場景就是要按指定的節點崗位計算了。

設置方式:在接受對象中設置一個節點編號比如:101。

運行方式:ccbpm在處理接受人時,會按指定節點上的人員身份計算,而非按上一步驟的人員身份計算了。

其它:這種方式是對按崗位計算的補充。

變更記錄: 2015/10/8爲了適應能夠按指定的表單字段作爲人員,特支持爲,也可以指定一個表單字段作爲處理人。

對於原來設置節點的方式也有效,如果設置一個字段名稱,ccbpm就從表單字段取值作爲接收人。

1.1.4.1.7: 僅按綁定的崗位計算

按照節點上綁定的崗位來計算接受人,這裏去掉了部門維度的過濾。

1.1.4.2: 按指定節點處理人
1.1.4.2.1: 按上一節點表單指定的字段值作爲本步驟的接受人

設置方式: 在當前節點屬性訪問規則處理內容中指定此方式,在上一個節點的表單上添加一個SysSendEmps的文本框。

運行方式: 在用戶填寫上一個步驟的節點表單時,這個指定的字段可以用逗號分號分開,可以輸入多個接受人員的編號。下一步的接受人員就按用戶輸入的內容結束。
說明:這種方式就類似於發送郵件。

1.1.4.2.2: 與上一節點處理人員相同

節點A是甲處理,發送到節點B,也是需要甲處理。

1.1.4.2.3: 與開始節點處理人相同

當前節點的處理人與開始節點一致,發起人是zhangsan,現在節點的處理人也是他。

1.1.4.2.4: 與指定節點處理人相同

應用場景1:A B C 三個節點, B向C發送時C的接受人員要求與A的工作人員一致。

設置方式: 在[訪問規則處理內容]中設置一個節點ID比如:101。

應用場景2:如下圖,當一個節點可以多個節點可以到達時,在【訪問規則處理內容】需要配置多個節點的ID值,如下圖:

image

節點3,可能是從節點1,或者節點2轉到節點3,如果在節點3上配置此規則就要配置節點2節點1的兩個節點ID,用逗號分開,例如: 507,509。這種情況下ccbpm就會自動判斷節點3究竟是從那個節點上過來了,從而把處理人投遞給節點3。

對父子流程的支持:

2015年1月28日爲珠海高凌變更:如果是父子流程,在子流程上的一個節點要指定與父流程的一個節點的人員相同,配置方式不變化。

比如:父親流程甲,調用子流程乙,在乙的一個節點上的工作處理人員與甲的一個節點處理人員相同,那就在該參數裏設置甲的節點編號,可以是多個變化,如果甲是一個子線程也同樣支持。

1.1.4.3: 按自定義SQL計算
1.1.4.3.1: 按設置的SQL獲取接受人計算

按SQL計算通俗好理解,就是ccbpm在執行一個查詢sql時,返回一個數據源,在數據源里約定該節點的接收人信息。

設置方法: 在當前節點屬性裏 [接受人SQL]設置一個sql 語句. 這個select 查詢語句有一個列. No 分別表示,操作

編號, 操作員名稱. 這個sql可以有參數.

比如: 1, SELECT No,Name FROM PORT_EMP WHERE [email protected]_Dept

查詢出來當前操作員中的部門下的所有人員.

2, SELECT xxx as No, yyy as Name FROM dbo.xxxx.YourTable WHERE 字段名稱=@表單字段名稱.

從您的業務系統中,查找一組人員,變量可以是當前節點字段的編號,格式爲 @+字段英文名稱.

關於合流點的接受人按sql獲取接受的表達式的問題

注意子線程向合流點發送時,接受人規則的表達式的變量是臨近合流點的子線程節點變量。

比如: 流程編號爲ABC三個節點.

A 是分流點,B是合流點 C是子線程。

如果C的接受人員規則是按sql計算:

配置的表達式如下表達式是錯誤的:

select UserNo as No, xx as Name from ND2701 WHERE OID=@OID

如下表達式纔是正確的:

select UserNo as No from ND2701 WHERE OID=@FID

這是因爲子線程在發送時獲取的變量OID 是子線程的ID而非,幹流上的WorkID.

關於子線程接受人的特殊約定:

如果遇到分組的維度,就約定返回4個列來解決問題,流程demo:\\流程樹\\同表單分合流\\一人多子線程模式(批次維度任務模式)流程.

在第2個子線程節點配置瞭如下SQL。

image

該數據源返回了三個列,分別是:No,Name, GroupMark

No=操作員編號,Name=操作員名稱, GroupMark就是分組的維度.

比如配置的SQL: SELECTNo,Name,FK_DeptFROMPort_EmpWHEREFK_Deptin('2','5')

應用場景: 有一批物品需要化驗,一個人員可能需要承擔多個化驗項目,這就需要這個人在這個子線程裏有n件工作。再比如:一件工作需要下發兩個部門處理,如果一個部門的一個人處理了,另外該部門的人員的工作就要自動去掉,屬於搶辦任務,也就是說,子線程也需要搶辦任務。

對動態表單樹的支持:

什麼是動態表單樹?請參節點屬性、表單、表單類型章節。簡單的說,該節點的表單是有上一步發送人員動態指定的。該節點大部分是子線程節點,也可以是多人處理的普通節點。

應用場景:a節點發向b節點,張三需要分配給,甲乙丙丁四個人去工作,但是這四個人工作內容不同。雖然甲乙丙丁四個人都可以接受到該節點的工作,但是填寫的內容是由張三動態的分配的。

我們就要在這裏約定數據源來表達接收人的信息,第一種情況沒有批次號:返回的列需要有如下要求,No,Name,FrmIDs 第3列是表單ID,多個表單ID用逗號分開。

第二中情況具有批次號:需要返回的列是, No,Name,BatchNo,FrmIDs.

Ccbpm爲該種應用場景做了一個demo,請參考:

image

在節點2屬性裏我們做了如下設置

image

實現步驟:在開始節點裏ccbpm的節點表單裏設計了一個明細表。

1.1.4.3.2: 按SQL確定子線程接受人與數據源

此方法與分合流相關,只有當前節點是子線程纔有意義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章