Changes between Version 1 and Version 2 of TracWorkflow
- Timestamp:
- Aug 13, 2014, 12:08:17 AM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracWorkflow
v1 v2 6 6 == デフォルトのワークフロー == #TheDefaultTicketWorkflow 7 7 === 0.10 からアップグレードした Environment === #Environmentsupgradedfrom0.10 8 `trac-admin <env> upgrade` を実行したとき、`trac.ini` に `[ticket-workflow]` セクションが追加され、 0.10 でのワークフロー (original ワークフロー) と同様のアクションをするようにデフォルトの設定値が設定されます。 8 `trac-admin <env> upgrade` を実行したとき、`trac.ini` に `[ticket-workflow]` セクションが追加され、 9 0.10 でのワークフロー (original ワークフロー) と同様のアクションをするようにデフォルトの設定値が設定されます。 9 10 10 11 original ワークフローは下図を参照してください: 11 12 12 [[Image(htdocs:../common/guide/original-workflow.png)]] 13 14 original ワークフローにはいくつかの重要な "欠点" があります; 新しいチケットを承認 (accept) したときにステータスは 'assigned' に設定されますが、 'assigned' のチケットを再割り当て (reassign) するとステータスは 'new' に設定され、直観的ではありません。 15 これは original ワークフローから "basic" ワークフローに移行することで解決します; original ワークフローから basic ワークフローへの移行には [http://trac.edgewall.org/browser/trunk/contrib/workflow/migrate_original_to_basic.py contrib/workflow/migrate_original_to_basic.py] が役に立つかもしれません。 13 {{{#!Workflow width=500 height=240 14 leave = * -> * 15 leave.operations = leave_status 16 leave.default = 1 17 accept = new -> assigned 18 accept.permissions = TICKET_MODIFY 19 accept.operations = set_owner_to_self 20 resolve = new,assigned,reopened -> closed 21 resolve.permissions = TICKET_MODIFY 22 resolve.operations = set_resolution 23 reassign = new,assigned,reopened -> new 24 reassign.permissions = TICKET_MODIFY 25 reassign.operations = set_owner 26 reopen = closed -> reopened 27 reopen.permissions = TICKET_CREATE 28 reopen.operations = del_resolution 29 }}} 30 31 original ワークフローにはいくつかの重要な "欠点" があります。 新しいチケットを承認 (accept) したときにステータスは 'assigned' に設定されますが、 'assigned' のチケットを再割り当て (reassign) するとステータスは 'new' に設定され、直観的ではありません。 32 これは original ワークフローから "basic" ワークフローに移行することで解決します。 original ワークフローから basic ワークフローへの移行には [http://trac.edgewall.org/browser/trunk/contrib/workflow/migrate_original_to_basic.py contrib/workflow/migrate_original_to_basic.py] が役に立つかもしれません。 16 33 17 34 === 0.11 で新規作成した Environment === #Environmentscreatedwith0.11 … … 20 37 basic ワークフローは下図を参照してください: 21 38 22 [[Image(htdocs:../common/guide/basic-workflow.png)]] 39 {{{#!Workflow width=700 height=300 40 leave = * -> * 41 leave.operations = leave_status 42 leave.default = 1 43 accept = new,assigned,accepted,reopened -> accepted 44 accept.permissions = TICKET_MODIFY 45 accept.operations = set_owner_to_self 46 resolve = new,assigned,accepted,reopened -> closed 47 resolve.permissions = TICKET_MODIFY 48 resolve.operations = set_resolution 49 reassign = new,assigned,accepted,reopened -> assigned 50 reassign.permissions = TICKET_MODIFY 51 reassign.operations = set_owner 52 reopen = closed -> reopened 53 reopen.permissions = TICKET_CREATE 54 reopen.operations = del_resolution 55 }}} 23 56 24 57 == そのほかのワークフロー == #AdditionalTicketWorkflows 25 58 26 Trac のソース にはいくつかのワークフローの例が含まれています; [http://trac.edgewall.org/browser/trunk/contrib/workflow contrib/workflow] の `*.ini` ファイル内のコンフィグセクションを参照してください。それらの一つはあなたが求めているものとマッチするかもしれません。 `*.ini` ファイル内のコンフィグセクションは、 `trac.ini` の `[ticket-workflow]` セクションに貼り付けて使用することができます。しかしながら、既に存在するチケットで、新しいワークフローに存在しないステータスのものがある場合は問題を来すかもしれません。27 28 これらの例の [ http://trac.edgewall.org/wiki/WorkFlow/Examples ダイヤグラム] を見ることができます。59 Trac のソースツリーの中でいくつかのワークフローのサンプルを提供しています。 [trac:source:trunk/contrib/workflow contrib/workflow] の `.ini` コンフィグセクションを探してみてください。その中のひとつにあなたが探しているものがあるでしょう。それらをあなたの `trac.ini` ファイルの `[ticket-workflow]` セクションに貼り付けてください。しかし、もしあなたがすでに起票済みのチケットをもっていて、それらのチケットのステータスが新しいワークフローに含まれていない場合に、問題が生じるでしょう。 60 61 これらの例の [trac:WorkFlow/Examples ダイヤグラム] を見ることができます。 29 62 30 63 == 基本的なワークフローのカスタマイズ == #BasicTicketWorkflowCustomization … … 45 78 46 79 ''actionname''`.operations` で使用できる値は以下の通りです: 47 - del_owner -- チケットの所有者を削除します。 48 - set_owner -- チケットの所有者を選択された所有者か入力された所有者に設定します。 49 - ''actionname''`.set_owner` カンマ区切りのリストか1つの値を設定することができます。 50 - set_owner_to_self -- チケットの所有者をログインユーザに設定します。 51 - del_resolution -- チケットの解決方法を削除します。 52 - set_resolution -- チケットの解決方法を選択された解決方法か入力された解決方法に設定します。 53 - ''actionname''`.set_resolution` カンマ区切りのリストか1つの値を設定することができます。 54 {{{ 55 例: 56 80 - del_owner -- チケットの所有者を削除します 81 - set_owner -- チケットの所有者を選択された所有者か入力された所有者に設定します 82 - ''actionname''`.set_owner` カンマ区切りのリストか1つの値を設定することができます 83 - set_owner_to_self -- チケットの所有者をログインユーザに設定します 84 - del_resolution -- チケットの解決方法を削除します 85 - set_resolution -- チケットの解決方法を選択された解決方法か入力された解決方法に設定します 86 - ''actionname''`.set_resolution` カンマ区切りのリストか1つの値を設定することができます。 例: 87 {{{ 57 88 resolve_new = new -> closed 58 89 resolve_new.name = resolve … … 60 91 resolve_new.permissions = TICKET_MODIFY 61 92 resolve_new.set_resolution = invalid,wontfix 62 }}}63 - leave_status -- "変更しない 現在のステータス: <現在のステータス>" (英語版では "leave as <current status>") を表示してチケットへの変更を行いません 。93 }}} 94 - leave_status -- "変更しない 現在のステータス: <現在のステータス>" (英語版では "leave as <current status>") を表示してチケットへの変更を行いません 64 95 '''Note:''' `set_owner` と `del_owner` などのように相反する操作を同時に指定した場合の動作は不定です。 65 96 … … 93 124 実行結果は `trac.pdf` として出力されます。 (`trac.ini` 同じディレクトリに出力されます。) 94 125 95 ワークフローパーザのオンライン版が http://foss.wush.net/cgi-bin/visual-workflow.pl で利用できます。96 97 ワークフローを変更した 後に、 Apache (サーバ) を再起動する必要があります。サーバの再起動が行われるまでは変更が適用されず変更前のワークフローが実行されることになります。126 http://foss.wush.net/cgi-bin/visual-workflow.pl でワークフローのパーサのオンラインでのコピーができます。 127 128 ワークフローを変更したあと、変更を適用するために Apache を再起動する必要があります。これは大切なことです。なぜならあなたがスクリプトを起動したとき、それでも変更箇所は現れますが、すべての古いワークフローがサーバの再起動がされるまで残ってしまうからです。 98 129 99 130 == 例: ワークフローにテストを追加する == #Example:AddingoptionalTestingwithWorkflow … … 115 146 }}} 116 147 148 === `tracopt.ticket.commit_updater` と testing ワークフローの組み合わせる方法 === #Howtocombinethetracopt.ticket.commit_updaterwiththetestingworkflow 149 150 [[trac:source:trunk/tracopt/ticket/commit_updater.py|tracopt.ticket.commit_updater]] は Trac 0.12 で [[TracRepositoryAdmin#trac-post-commit-hook|古い trac-post-commit-hook を置き換える]] オプションのコンポーネントです。 151 152 デフォルトで、このコンポーネントはチェンジセットのログメッセージの中の ''close'' や ''fix'' などのキーワードに反応し、対応するワークフローのアクションを実行します。 153 154 もし、上記で述べたような testing ステージがあるような複雑なワークフローを使用していて、キーワードに ''closes'' があった場合にステータスを ''closed'' にする代わりに、 ''testing'' に移したいならば、かなりコードを改変させる必要があるでしょう。 155 156 `trac-post-commit-hook` については、 [[trac:wiki:0.11/TracWorkflow#How-ToCombineSVNtrac-post-commit-hookWithTestWorkflow|Trac 0.11 レシピ]] を参照して下さい。このコンポーネントの修正方法がいくらかわかるでしょう。 157 117 158 == 例: レビュー状態を追加する == #Example:Addsimpleoptionalgenericreviewstate 118 159 … … 154 195 leave.default = 1 155 196 leave.operations = leave_status 156 reassign = new,assigned, reopened -> new197 reassign = new,assigned,accepted,reopened -> assigned 157 198 reassign.operations = set_owner 158 199 reassign.permissions = TICKET_MODIFY … … 202 243 (訳注: この項はワークフローシステムの実装に関するアイデア集です。現在実装されているものではないので、プラグインを作成するときなどに参考にしてください) 203 244 204 New enhancement ideas for the workflow system should be filed as enhancement tickets against the `ticket system` component. If desired, add a single-line link to that ticket here. Also look at the [ th:wiki:AdvancedTicketWorkflowPlugin] as it provides experimental operations.245 New enhancement ideas for the workflow system should be filed as enhancement tickets against the `ticket system` component. If desired, add a single-line link to that ticket here. Also look at the [http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin AdvancedTicketWorkflowPlugin] as it provides experimental operations. 205 246 206 247 If you have a response to the comments below, create an enhancement ticket, and replace the description below with a link to the ticket. … … 212 253 ''This appears to add complexity without adding functionality; please provide a detailed example where these additions allow something currently impossible to implement.'' 213 254 214 * operations could be anything: sum up the time used for the activity, or just write some statistical fields like 255 * operations could be anything: sum up the time used for the activity, or just write some statistical fields like 215 256 ''A workflow plugin can add an arbitrary workflow operation, so this is already possible.'' 216 257 … … 221 262 222 263 * Actions should be selectable based on the ticket type (different Workflows for different tickets) 223 ''Look into the [th:wiki:AdvancedTicketWorkflowPlugin]'s `triage` operation.'' 264 ''Look into the [http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin AdvancedTicketWorkflowPlugin]'s `triage` operation.'' 265 266 * I'd wish to have an option to perform automatic status changes. In my case, I do not want to start with "new", but with "assigned". So tickets in state "new" should automatically go into state "assigned". Or is there already a way to do this and I just missed it? 267 ''Have a look at [http://trac-hacks.org/wiki/TicketCreationStatusPlugin TicketCreationStatusPlugin] and [http://trac-hacks.org/wiki/TicketConditionalCreationStatusPlugin TicketConditionalCreationStatusPlugin]'' 268 269 * I added a 'testing' state. A tester can close the ticket or reject it. I'd like the transition from testing to rejected to set the owner to the person that put the ticket in 'testing'. The [http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin AdvancedTicketWorkflowPlugin] is close with set_owner_to_field, but we need something like set_field_to_owner. 270 271 * I'd like to track the time a ticket is in each state, adding up 'disjoints' intervals in the same state.