看完第一支程式,相信讀者會有許多疑問,這些先就流程的設定做初步的介紹。首先,讀者應該注意到了,第一支程式的用到三個xml設定檔,沒錯,這三個是設定流程的設定檔。
  • osworkflow.xml:這個檔案是設定流程是否存在資料庫或存在記憶體,前面的內容是存在MS SQL Server的寫法。
  • leave.xml:請假流程寫在這個檔案,這也是osworkflow的重點之一。
  • workflows.xml:指定系統啟動時要載入那些流程。

這裡針對leave.xml做些說明…
  • initial-actions:每個流程都至少需定義一個initial-actions,這是流程的起點。
  • action:導致流程變動的動作,每個action都有個編號,且不能重複。
  • step:雖然它的名稱是步驟,似乎它會有動作? 其實將它視為流程位置可能比較恰當,osworkflow真正的動作在action發生。
  • result:執行動作後的結果,result有兩種conditional-result和unconditional-result,每個result一定有unconditional-result,當conditional-result的條件都不滿足時,就執行unconditional-result。
  • status:流程在某個action時的狀態。
  • old-status:流程執行某個action後的狀態。
  • caller:這是OSWorkflow的保留字,可取得呼叫此工作流的user,即Workflow workflow = new BasicWorkflow(caller); 在資料庫中會記錄於Table OS_HISTORYSTEP如下:

    記得在pre-functions加上如下設定…
    <pre-functions>
      <function type="class">
        <arg name="class.name">com.opensymphony.workflow.util.Caller</arg>
      </function>
    </pre-functions>
  • owner:這是傳工作流到此步驟的user。