麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

osworkflow部署描述

2019-11-18 13:06:34
字體:
來源:轉載
供稿:網友

1. Your first workflow - Chinese
Last changed on Jun 02, 2004 by Quake Wang

h3 創建描述符

首先,讓我們來定義工作流。你可以使用任何名字來命名工作流。一個工作流對應一個xml格式的定義文件。讓我們來開始新建一個“myworkflow.xml”的文件,這是樣板文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE workflow PUBLIC   "-//OpenSymphony Group//DTD OSWorkflow 2.7//EN"  "http://www.opensymphony.com/osworkflow/workflow_2_7.dtd"><workflow>  <initial-actions>    ...  </initial-actions>  <steps>    ...  </steps></workflow>

首先是標準的XML頭部,要注重的是OSWorkflow將會通過這些指定的DTD來驗證XML內容的合法性。你可以使用絕大多數的XML編輯工具來編輯它,并且可以highlight相應的錯誤。

h3 步驟和動作

接下來我們來定義初始化動作和步驟。首先需要理解的OSWorkflow重要概念是steps (步驟) 和 actions (動作)。一個步驟是工作流所處的位置,比如一個簡單的工作流過程,它可能從一個步驟流轉到另外一個步驟(或者有時候還是停留在一樣的步驟)。舉例來說,一個文檔治理系統的流程,它的步驟名稱可能有“First Draft - 草案初稿”,“Edit Stage -編輯階段”,“At publisher - 出版商”等。

動作指定了可能發生在步驟內的轉變,通常會導致步驟的變更。在我們的文件治理系統中,在“草案初稿”這個步驟可能有“start first draft - 開始草案初稿”和“complete first draft - 完成草案初稿”這樣2個動作。

簡單的說,步驟是“在哪里”,動作是“可以去哪里”。

初始化步驟是一種非凡類型的步驟,它用來啟動工作流。在一個工作流程開始前,它是沒有狀態,不處在任何一個步驟,用戶必須采取某些動作才能開始這個流程。這些非凡步驟被定義在 <initial-actions>。

在我們的例子里面,假定只有一個簡單的初始化步驟:“Start Workflow”,它的定義在里面<initial-actions>:

<action id="1" name="Start Workflow">  <results>    <unconditional-result old-status="Finished" status="Queued" step="1"/>  </results></action>

這個動作是最簡單的類型,只是簡單地指明了下一個我們要去的步驟和狀態。

h3 工作流狀態

工作流狀態是一個用來描述工作流程中具體步驟狀態的字符串。在我們的文檔治理系統中,在“草案初稿”這個步驟可能有2個不同的狀態:“Underway - 進行中”和“Queued - 等候處理中”

我們使用“Queued”指明這個條目已經被排入“First Draft”步驟的隊列。比如說某人請求編寫某篇文檔,但是還沒有指定作者,那么這個文檔在“First Draft”步驟的狀態就是“Queued”。“Underway”狀態被用來指明一個作者已經挑選了一篇文檔開始撰寫,而且可能正在鎖定這篇文檔。

h3 第一個步驟

讓我們來看第一個步驟是怎樣被定義在<steps>元素中的。我們有2個動作:第一個動作是保持當前步驟不變,只是改變了狀態到“Underway”,第二個動作是移動到工作流的下一步驟。我們來添加如下的內容到<steps>元素:
<step id="1" name="First Draft">  <actions>    <action id="1" name="Start First Draft">      <results>        <unconditional-result old-status="Finished" status="Underway" step="1"/>      </results>    </action>    <action id="2" name="Finish First Draft">      <results>        <unconditional-result old-status="Finished" status="Queued" step="2"/>      </results>    </action>  </actions></step><step id="2" name="finished" />

這樣我們就定義了2個動作,old-status屬性是用來指明當前步驟完成以后的狀態是什么,在大多數的應用中,通常用"Finished"表示。

上面定義的這2個動作是沒有任何限制的。比如,一個用戶可以調用action 2而不用先調用action 1。很明顯的,我們假如沒有開始撰寫草稿,是不可能去完成一個草稿的。同樣的,上面的定義也答應你開始撰寫草稿多次,這也是毫無意義的。我們也沒有做任何的處理去限制其他用戶完成別人的草稿。這些都應該需要想辦法避免。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久午夜神器 | 黄色av.com| 日韩视频在线视频 | 99国产精品欲a | 在线成人www免费观看视频 | 久久久久久久网站 | 黄色aaa视频 | 毛片视频免费观看 | 免费黄色在线 | 一本精品999爽爽久久久 | 欧美.com| 亚洲精品无码不卡在线播放he | 欧美性生视频 | 黄污网站在线 | 天堂福利电影 | 91精品观看91久久久久久国产 | xxxxhdvideosex | 国产大片中文字幕在线观看 | 久久99国产精品免费网站 | 欧美三级毛片 | 亚洲成人夜色 | 中文字幕视频在线播放 | 亚洲一区二区成人 | 日本在线不卡一区二区 | 羞羞的视频在线免费观看 | 毛片免费在线观看视频 | 亚洲第一男人天堂 | www.99久| 久久久久久麻豆 | 亚洲第一男人天堂 | 欧美大穴 | 成年性羞羞视频免费观看无限 | 久久久久久久久久久国产精品 | 免费一级特黄欧美大片勹久久网 | 国产伦久视频免费观看视频 | 蜜桃免费在线 | 香蕉视频18 | 天天草天天干天天射 | 日本精品一区二区 | 精品久久久久久久久久久αⅴ | 中国产一级毛片 |