在 TASKCTL解決方案資源-->範例:TASKCTL設計主要技術點-->condition,最靈活的控制手段(流程), 是有簡單的提到怎麼用的。
分支3和分支4就是通過shell中返回一個字符串做判斷,然後再決定該運行那個分支。
通過查看代碼設計和對應的shell腳本,應該是TASKCTL對每個任務都有很多記錄,TASKCTL_JOB_RETMSG是給用戶提供一種可以直接自定義任務的屬性(狀態、記錄),然後通過自帶函數getjretmsg來獲取這一屬性,達到靈活控制調度流程的目的。
官方的案例中的shell腳本如下:
1
2
3
4
|
#!/bin/sh sleep 10 echo "TASKCTL_JOB_RETMSG=$1" exit 0 |
調度中案例的代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
< sh > < name >job2</ name > < progname >$TASKCTLDIR/demo/shell/branchctl2.sh</ progname > < para >$(retmsg)</ para > < jobdesc >返回a-分支3,返回b-分支4</ jobdesc > </ sh > <!--分支3 --> < parallel > < name >allbranch1</ name > < serial > < name >branch3</ name > < jobdesc >分支3</ jobdesc > < condition >if(strcmp(getjretmsg('job2'),'a')==0) CTL_DOIT else CTL_IGN</ condition > < exe > ...... </ exe > < exe > ...... </ exe > </ serial > <!--分支4 --> < serial > < name >branch4</ name > < jobdesc >分支4</ jobdesc > < condition >if(strcmp(getjretmsg('job2'),'b')==0) CTL_DOIT else CTL_IGN</ condition > < exe > ...... </ exe > < exe > ...... </ exe > </ serial > </ parallel > |
每個任務被定義了後應該都有很多類型的屬性,TASKCTL_JOB_RETMSG只是其中一種。自帶函數getjretmsg就是獲取這個屬性(TASKCTL_JOB_RETMSG)的方法。使用時應該注意,TASKCTL_JOB_RETMSG='',這個應該單獨成行,但同一個作業中出現多次時,以第一次爲準。