TracWorkflow のバージョン 1 とバージョン 2 との変更
- 日時:
- 2012/01/16 5:19:14 (13年前)
凡例:
- 未変更
- 追加
- 削除
- 更新
-
TracWorkflow
v1 v2 13 13 14 14 original ワークフローにはいくつかの重要な "欠点" があります; 新しいチケットを承認 (accept) したときにステータスは 'assigned' に設定されますが、 'assigned' のチケットを再割り当て (reassign) するとステータスは 'new' に設定され、直観的ではありません。 15 これは original ワークフローから "basic" ワークフローに移行することで解決します; original ワークフローから basic ワークフローへの移行には `contrib/workflow/migrate_original_to_basic.py`が役に立つかもしれません。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] が役に立つかもしれません。 16 16 17 17 === 0.11 で新規作成した Environment === #Environmentscreatedwith0.11 … … 24 24 == そのほかのワークフロー == #AdditionalTicketWorkflows 25 25 26 Trac のソースにはいくつかのワークフローの例が含まれています; `contrib/workflow` の `*.ini` ファイル内のコンフィグセクションを参照してください。それらの一つはあなたが求めているものとマッチするかもしれません。 `contrib/workflow` の `*.ini` ファイル内のコンフィグセクションは、 `trac.ini` の `[ticket-workflow]` セクションに貼り付けて使用することができます。 26 Trac のソースツリーの中でいくつかのワークフローのサンプルを提供しています; [trac:source:trunk/contrib/workflow contrib/workflow] の `.ini` コンフィグセクションを探してみてください。その中のひとつにあなたが探しているものがあるでしょう。それらをあなたの `trac.ini` ファイルの `[ticket-workflow]` セクションに貼り付けてください。しかし、もしあなたがすでに起票済みのチケットをもっていて、それらのチケットのステータスが新しいワークフローに含まれていない場合に、問題が生じるでしょう。 27 28 これらの例の [http://trac.edgewall.org/wiki/WorkFlow/Examples ダイヤグラム] を見ることができます。 27 29 28 30 == 基本的なワークフローのカスタマイズ == #BasicTicketWorkflowCustomization 31 32 Note: チケットの "ステータス群 (Statuses or states)" は独立した状態で定義することはできません。チケットがとりうるステータスはワークフローで定義された状態遷移から自動生成されます。つまり、チケットを新規作成するためには、ワークフローで開始状態と終了状態を持つ状態遷移を定義せねばなりません。 29 33 30 34 `trac.ini` に `[ticket-workflow]` セクションを作成します。 … … 89 93 実行結果は `trac.pdf` として出力されます。 (`trac.ini` 同じディレクトリに出力されます。) 90 94 91 ワークフローを変更した後に、 Apache (サーバ) を再起動する必要があります。サーバの再起動が行われるまでは変更が適用されず変更前のワークフローが実行されることになります。 95 http://foss.wush.net/cgi-bin/visual-workflow.pl でワークフローのパーサのオンラインでのコピーができます。 96 97 ワークフローを変更したあと、変更を適用するために Apache を再起動する必要があります。これは大切なことです。なぜならあなたがスクリプトを起動したとき、それでも変更箇所は現れますが、すべての古いワークフローがサーバの再起動がされるまで残ってしまうからです。 92 98 93 99 == 例: ワークフローにテストを追加する == #Example:AddingoptionalTestingwithWorkflow … … 96 102 97 103 {{{ 98 testing = new,accepted,needs_work -> testing104 testing = new,accepted,needs_work,assigned,reopened -> testing 99 105 testing.name = Submit to reporter for testing 100 106 testing.permissions = TICKET_MODIFY … … 107 113 pass.operations = set_resolution 108 114 pass.set_resolution = fixed 115 }}} 116 117 === `tracopt.ticket.commit_updater` と testing ワークフローの組み合わせる方法 === #Howtocombinethetracopt.ticket.commit_updaterwiththetestingworkflow 118 119 [[trac:source:trunk/tracopt/ticket/commit_updater.py|tracopt.ticket.commit_updater]] は Trac 0.12 で [[TracRepositoryAdmin#trac-post-commit-hook|古い trac-post-commit-hook を置き換える]] オプションのコンポーネントです。 120 121 デフォルトで、このコンポーネントはチェンジセットのログメッセージの中の ''close'' や ''fix'' などのキーワードに反応し、対応するワークフローのアクションを実行します。 122 123 もし、上記で述べたような testing ステージがあるような複雑なワークフローを使用していて、キーワードに ''closes'' があった場合にステータスを ''closed'' にする代わりに、 ''testing'' に移したいならば、かなりコードを改変させる必要があるでしょう。 124 125 `trac-post-commit-hook` については、 [[trac:wiki:0.11/TracWorkflow#How-ToCombineSVNtrac-post-commit-hookWithTestWorkflow|Trac 0.11 レシピ]] を参照して下さい。これは、このコンポーネントを修正する方法についていくつかのアイディアをくれるでしょう。 126 127 == 例: レビュー状態を追加する == #Example:Addsimpleoptionalgenericreviewstate 128 129 "testing" ステータスが利用者によっては、異なる状況を指すような Trac の使い方をしている場合、実装固有の詳細な箇所は "testing" に分類せず、デフォルトのワークフローの `assigned` と `closed` ステータスの間に、必要に応じて分岐できるステータスを追加したいと考えるはずです。新しいステータスは `reviewing` とすべきでしょう。 "submitted for review" されたチケットは、どのようなステータスからでも reassigned になります。レビューが通過した場合、 `resolve` アクションを再利用して、チケットを close します。通過しない場合は `reassign` アクションを再利用して通常のワークフローに戻します。 130 131 新しい `reviewing` ステータスは `review` アクションに関連付けます。以下のように記述してください: 132 133 {{{ 134 review = new,assigned,reopened -> reviewing 135 review.operations = set_owner 136 review.permissions = TICKET_MODIFY 137 }}} 138 139 デフォルトの Trac 0.11 ワークフローに統合するために、 `reviewing` ステータスを `accept` と `resolve` アクションに追加します。以下のようになります: 140 141 {{{ 142 accept = new,reviewing -> assigned 143 […] 144 resolve = new,assigned,reopened,reviewing -> closed 145 }}} 146 147 必要に応じて `reviewing` からステータスを変更せずに、チケットの担当者 (owner) を変更するための新しいアクションを追加します。この設定を行うと、 `new` ステータスに遷移させることなくレビューの担当者を変更することができるようになります。 148 149 {{{ 150 reassign_reviewing = reviewing -> * 151 reassign_reviewing.name = reassign review 152 reassign_reviewing.operations = set_owner 153 reassign_reviewing.permissions = TICKET_MODIFY 154 }}} 155 156 完全な `[ticket-workflow]` への設定は以下のようになります: 157 158 {{{ 159 [ticket-workflow] 160 accept = new,reviewing -> assigned 161 accept.operations = set_owner_to_self 162 accept.permissions = TICKET_MODIFY 163 leave = * -> * 164 leave.default = 1 165 leave.operations = leave_status 166 reassign = new,assigned,reopened -> new 167 reassign.operations = set_owner 168 reassign.permissions = TICKET_MODIFY 169 reopen = closed -> reopened 170 reopen.operations = del_resolution 171 reopen.permissions = TICKET_CREATE 172 resolve = new,assigned,reopened,reviewing -> closed 173 resolve.operations = set_resolution 174 resolve.permissions = TICKET_MODIFY 175 review = new,assigned,reopened -> reviewing 176 review.operations = set_owner 177 review.permissions = TICKET_MODIFY 178 reassign_reviewing = reviewing -> * 179 reassign_reviewing.operations = set_owner 180 reassign_reviewing.name = reassign review 181 reassign_reviewing.permissions = TICKET_MODIFY 109 182 }}} 110 183 … … 131 204 プラグインを使用した拡張でさえも十分でないならば !ConfigurableTicketWorkflow のコンポーネントを無効にし、!ConfigurableTicketWorkflow を完全に置き換える十分な機能を持ったプラグインを作成することも可能です。 132 205 206 == ワークフローのステータスをマイルストーンのプログレスバーに追加する == #AddingWorkflowStatestoMilestoneProgressBars 207 208 新しいステータスをワークフローに追加した場合、マイルストーンのプログレスバーへの表示もカスタマイズできます。 [TracIni#milestone-groups-section TracIni] を参照してください。 209 133 210 == 次のステップに向けたアイデア集 == #someideasfornextsteps 134 211 135 212 (訳注: この項はワークフローシステムの実装に関するアイデア集です。現在実装されているものではないので、プラグインを作成するときなどに参考にしてください) 136 213 137 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. 214 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. 138 215 139 216 If you have a response to the comments below, create an enhancement ticket, and replace the description below with a link to the ticket. … … 143 220 * '''postops''': automatic, when leaving the state/activity 144 221 * '''actions''': can be chosen by the owner in the list at the bottom, and/or drop-down/pop-up together with the default actions of leaving the node on one of the arrows. 145 This appears to add complexity without adding functionality; please provide a detailed example where these additions allow something currently impossible to implement. 222 ''This appears to add complexity without adding functionality; please provide a detailed example where these additions allow something currently impossible to implement.'' 146 223 147 224 * operations could be anything: sum up the time used for the activity, or just write some statistical fields like 148 A workflow plugin can add an arbitrary workflow operation, so this is already possible. 225 ''A workflow plugin can add an arbitrary workflow operation, so this is already possible.'' 149 226 150 227 * set_actor should be an operation allowing to set the owner, e.g. as a "preop": 151 228 * either to a role, a person 152 229 * entered fix at define time, or at run time, e.g. out of a field, or select. 153 This is either duplicating the existing `set_owner` operation, or needs to be clarified. 230 ''This is either duplicating the existing `set_owner` operation, or needs to be clarified.'' 154 231 155 232 * Actions should be selectable based on the ticket type (different Workflows for different tickets) 156 This is becoming a frequent request, with clear usecases. The closest the current implementation will allow is to have a plugin provide a `triage` action that sets the next state based on the ticket type, so a `new` ticket would move to `new_task`, `new_defect`, etc., and the workflow graph would separate at that point. 233 ''Look into the [th:wiki:AdvancedTicketWorkflowPlugin]'s `triage` operation.'' 234