亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

osworkflow descriptor 解析 重要概念

2019-11-18 11:33:31
字體:
來源:轉載
供稿:網友

 

歡迎與我交流(yun15291li@hotmail.com

 

在這篇文章中,主要介紹osworkflow的核心概念以及重要的部分,讓大家對osworkflow有個比較全面的熟悉。

在osworkflow中最最核心的東西就是工作流定義的xml文件。盡管它并不是一定要定義成xml文件。但是xml格式是一種標準的通用的格式。

這個xml文件為某一個給定的工作流進行描述steps、states,transitions,和functionality。下面闡述一下此xml的一般規則:

1、  一個工作流由多個steps組成

2、  對于每個step,可以包括多個actions。一個action可以被設置成自動運行或者需要通過人工交互才可以運行。

3、  每個action都要包括至少一個unconditional result和0或多個conditional results。

4、  假如設定了多個concitioanl results,所有當中的第一個將被執行,假如沒有設定conditional results或者沒有conditions滿足,那么執行unconditional result

5、  一個result過后可能依舊停留在當前的step中,一個新的step,一個split,一個join。在所有的情形中,工作流的state跟著變化(例子工作流中的states分別為:Underway,Queued,和finished)

6、  假如一個result引起一個split,這個result會指定split的屬性,以指向一個split元素。

7、  一個split可以有一個或者多個unconditional results,但是沒有conditional results。Unconditional results。Unconditional results需要指定steps。

8、  一個PRopertyset是一個持久層數據的map,在全局應用中都是可用的。

9、  還有一種叫做transientVars的map,它只存活于一個工作流調用過程中的一定的生命周期,它將會對所有functions和conditions,包括所有的registers,user input,以及工作流上下文狀態等起作用。

 

工作流概念:

下面開始理解osworkflow的核心概念:

對于step,status,actions部分就不多說明了,其實我覺得理解概念的最快方法應該是參照實例,即使我們不能用高高大大的詞匯描繪出來,能自己理解是什么意思就可以了。

Unconditional result 和 conditional results

這里做以簡單介紹,對于每個action,要求至少存在一個Unconditional  result,一個result也就是通過一系列指示來告訴osworkflow下一步的任務是干什么。這種調用使得產生變遷進而從一個state到另外一個state。這種概念是在UML的狀態機里有講,希望了解狀態機相關概念的可以到UML相關書籍中查看。

Conditional result是unconditional result的一種擴展。不同的地方在于他需要一些子元素:condition。用and 和 or來標志各個condition之間的關系。

Conditional 和unconditional 的最終result可以產生三種效應或者說是結果:

1、  一個新的step/status

2、  一個split,出現一或多個step/status

3、  一個join,一個新的step/status

普遍的,一個split或者join不能result出另外一個split或join。

一個step/status result可以按下面方式簡單的設定:

<unconditional-result old-status="Finished" step="2"

                      status="Underway" owner="${someOwner}"/>

 

從一個state split 到多個 states可以按以下方式達到:

<unconditional-result split="1"/>
...
<splits>
  <split id="1">
    <unconditional-result old-status="Finished" step="2" 
                          status="Underway" owner="${someOwner}"/>
    <unconditional-result old-status="Finished" step="2" 
                          status="Underway" owner="${someOtherOwner}"/>
  </split>
</splits>

 

Joins是比較復雜的用例。一個典型的join看起來大致如下:

<!-- for step id 6 ->
<unconditional-result join="1"/>
...
<!- for step id 8 ->
<unconditional-result join="1"/>
...
<joins>
  <join id="1">
    <join id="1">
    <conditions type="AND">
      <condition type="beanshell">
        <arg name="script">
          "Finished".equals(jn.getStep(6).getStatus() 
          && "Finished".equals(jn.getStep(8).getStatus())
        </arg>
      </condition>
    </conditions>
  </join>
  <unconditional-result old-status="Finished" status="Underway" 
                                 owner="test" step="2"/>
  </join>
</joins>

上面這段代碼中最需要關心的就應該是jn。當join實際發生的時候,這個非凡的變量jn可以被用來建立表達式。本質上,可以很輕易理解出這個段xml的意思就是:當step6和8都finish時候在此處進行join。

Functions部分:

Osworkflow用function來定義商業邏輯和一些需要定義執行的服務。用functions標簽來表示。

兩種functions(pre和post)

Pre 是在工作流進行某個變遷之前需要被執行的。一個比較好的例子:為了在result中state變更產生,而先建立caller。

Post是在之后執行的。如當某一個state改變后,發送一email到某處。

Functions可以在兩個分別的地方被指定:steps和actions。

 

Trigger Functions

 

Validators

 

Registers

一個function:用來返回一個用以被其他普通對象能夠輕易訪問得到的對象。尤其是指workflow 的實體類。返回的對象類型不閑典型的例子如:document,metadata,issue,task等。非常便利。

<registers>
       <register name="doc" class="com.acme.DocumentRegister"/>
</registers>
...
<results>
       <result condition="doc.priority == 1" step="1" status="Underway" 
                  owner="${someManager}"/>
       <unconditional-result step="1" status="Queued"/>
</results>

 

Conditions

 

變量

 

授權與限權

 

自動執行的action

設置auto=true

 

Common and global actions:

Common和globalactions的主要作用在于在工作流定義文件中能夠避免代碼重復。

基本思想就是簡單。這兩種actions是在最開始就進行說明的,在initial-actions元素后面。

這兩處還不能完全理解好!

Common actions:在最開始定義好,可以在其他地方如此引用

<common-action id="100" />

例如一個“send mail”的action

Global actions:不同之處在于顯式的被某一個step引用。它通常對所有的steps都是可用的。一個例子:“終止工作流”,在任何一步,都有可能終止工作流。

 

需要注重的是:這兩種actions要具備唯一的ID,而不能和其他action的ID重復。

 

接下來主要講解關于function的四種情況:

osworkflow中的function就是可以在變遷之前或者后進行執行的內容。

1、  基于java的functions

從classloader中加載java 類,通過jndi找會java類,遠程ejbs,本地ejb。

這一類型的function必須實現接口:com.opensymphony.workflow.FunctionProvider,在這個接口中有一個方法execute。這個方法(execute)需要三個參數

可以自己去查api即可找到這三個參數,兩個map一個propertyset

基于java的functions

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
两个人的视频www国产精品| 久久精品国产成人精品| 国产精品欧美激情| 亚洲日韩中文字幕在线播放| 日韩中文在线视频| 国产精品精品久久久| 国产成+人+综合+亚洲欧洲| 欧美午夜精品久久久久久浪潮| 亚洲第一精品久久忘忧草社区| 九九久久久久久久久激情| 久久精品国产清自在天天线| 中文字幕亚洲专区| 日韩a**站在线观看| 57pao国产成人免费| 色阁综合伊人av| 国产精品久久婷婷六月丁香| 久久久精品免费| 欧美亚洲视频在线看网址| 国产女精品视频网站免费| 国产精品久久久久久久7电影| 国产精品伦子伦免费视频| 国产在线一区二区三区| 欧美日韩国产一区中文午夜| 另类美女黄大片| 久久久亚洲福利精品午夜| 69av在线播放| 日韩免费中文字幕| 97在线视频免费观看| 成人中心免费视频| 亚洲国内高清视频| 日韩国产精品亚洲а∨天堂免| 午夜精品福利在线观看| 欧美寡妇偷汉性猛交| 日韩成人av一区| 亚洲成人激情小说| 国产一区二区三区四区福利| 日韩av不卡电影| 欧美—级a级欧美特级ar全黄| 亚洲人成在线免费观看| 日韩av在线网站| 亚洲欧美在线磁力| 91精品视频在线播放| 深夜福利日韩在线看| 68精品国产免费久久久久久婷婷| 国产精品福利网| 色噜噜狠狠狠综合曰曰曰| 国产精品久久久久久久久久三级| 日韩电影免费观看中文字幕| 欧美日韩美女视频| 日韩欧美一区二区三区| 国产一区二区视频在线观看| 日韩美女视频中文字幕| 国产精品亚洲美女av网站| 亚洲天堂网站在线观看视频| 91久久夜色精品国产网站| 亚洲国产日韩精品在线| 中文在线不卡视频| 亚洲精品在线看| 亚洲国产精品嫩草影院久久| 最近中文字幕日韩精品| 色阁综合伊人av| 日韩中文娱乐网| 国产精品毛片a∨一区二区三区|国| 欧美日韩一区二区三区| 午夜精品国产精品大乳美女| 久久理论片午夜琪琪电影网| 亚洲在线免费视频| 国产精品白嫩初高中害羞小美女| 在线播放精品一区二区三区| 九九久久精品一区| 日韩中文娱乐网| 在线看片第一页欧美| 亚洲精品福利免费在线观看| 亚洲性猛交xxxxwww| 精品欧美一区二区三区| 国产婷婷成人久久av免费高清| 国产精品色午夜在线观看| 亚洲国产欧美一区| 亚洲欧洲成视频免费观看| 亚洲欧洲午夜一线一品| 国产一区二区三区在线看| 欧美精品福利视频| 亚洲第一二三四五区| 国产精品爽黄69| 97在线视频免费播放| 欧美猛男性生活免费| 亚洲变态欧美另类捆绑| 欧美专区日韩视频| 最近中文字幕mv在线一区二区三区四区| 97视频网站入口| 最好看的2019的中文字幕视频| 69视频在线免费观看| 91久久久亚洲精品| 精品亚洲永久免费精品| 日韩精品在线视频观看| 日韩国产高清视频在线| 美女视频黄免费的亚洲男人天堂| 亚洲在线www| 国产精品欧美一区二区三区奶水| 视频在线一区二区| 欧美精品999| 在线不卡国产精品| 久久成人精品视频| 国产精品一区二区久久久久| 91精品啪在线观看麻豆免费| 欧美精品videos性欧美| 美日韩精品免费观看视频| 国产精品电影网站| 91精品国产91久久| www国产亚洲精品久久网站| 欧美在线影院在线视频| 亚洲一区二区在线播放| 国产亚洲一区二区精品| 国产精品视频yy9099| 97在线观看免费高清| 95av在线视频| 538国产精品一区二区在线| 亚洲午夜未删减在线观看| 秋霞午夜一区二区| 欧美高清不卡在线| 欧美黄色成人网| 日韩极品精品视频免费观看| 久久成人国产精品| 欧美大尺度激情区在线播放| 一区二区中文字幕| 国产成人涩涩涩视频在线观看| 红桃视频成人在线观看| 欧美日韩综合视频网址| 精品欧美激情精品一区| 国产精品福利观看| 亚洲男人天堂网| 97碰在线观看| 欧美老肥婆性猛交视频| 国产视频精品一区二区三区| 国产亚洲a∨片在线观看| 亚洲成人av在线播放| 成人欧美一区二区三区黑人孕妇| 伊人激情综合网| 欧美成人剧情片在线观看| 亚洲www在线| 国产精品视频公开费视频| 国产精国产精品| 欧美中文字幕在线播放| 国产福利成人在线| 国产精品久久久久久久午夜| 欧美美女操人视频| 亚洲国产高潮在线观看| 久久综合久中文字幕青草| 国产综合久久久久久| 欧美xxxx做受欧美.88| 精品人伦一区二区三区蜜桃免费| 国产999精品久久久影片官网| 欧美做受高潮电影o| 亚洲成色777777在线观看影院| 久久久999国产精品| 国产精品扒开腿做爽爽爽的视频| 九九久久久久99精品| 91视频免费在线| 色偷偷噜噜噜亚洲男人的天堂| 精品无人国产偷自产在线| 亚洲欧美在线免费观看| 日日狠狠久久偷偷四色综合免费| 日韩美女毛茸茸| 亚洲四色影视在线观看|