Tracのワークフローを作るのは難しいということをよく聞く。本当に難しいのかってことを少し考えてみる。WorkflowEditorPluginもあるので、私は、ちょっとしたことに気を付けてやれば、難しいというよりめんどうなだけだと思っています。 私は次の二点に気を付けて、 1. 一つのステータスに移動するアクションを(leaveを除いて)一つにする 2. ちょっとした遠回りで済む、必要のない遷移は削除して簡単にしておく。(例:accept->acceptはaccept->assign->accept) 次の手順でワークフローを作っていきます。 1. Visioで状態遷移図を作る(ステータスを配置し曲線のコネクタでつなぐ) 2. アクションを決める 2. 図を印刷してコネクタに番号をつける 3. コネクタ番号をつぶしながら、アクションのリストに遷移元を書いていく 出来上がった図はこんなかんじ
勤務地変更になって,4時間/日程度通勤時間にとられると,更新する時間が無くなってしまいましたが,Tracは使っていないというわけではありませんでした.今回はお手伝い中のプロジェクトで,Tracを自由に使ってもらった結果Trac-Outlook連携が必要になりましたのでその報告です.私が会議資料を作るためのチケットを登録しているのを見たからか,数分で終わる作業がチケット化されてしまうようになった.(こんなこと説明したくないので,いやになってしまいますが,)Outlookのタスクとアポイントの使い方を説明した.ただ,何かと共有フォルダとExcelが出てくるようなところなので,このままにしておくとTracを使わなくなりそうなので,TracのチケットをOutlookに取り込んで,そこだけ見ておけば良いということにしました. 自宅で使うために,TracHacksを見れるように少し機能を落として,Tr
MS-Project連携やTracの情報からレポートを作るときに,ユーザ名をちゃんとした漢字で出したいので作ってみました. TracCompleteUserPluginのCompleteUserWeb.process_requestのSQLを拝借して来ると簡単に出来ました.IXMLRPCHandlerをインプリしたクラスにこんな感じで追加するだけ.追加方法は TracのXMLRPCを拡張してみる を参照してください. def xmlrpc_methods(self): yield ('TICKET_VIEW', ((list, ),), self.getUsers) def getUsers(self, req): db = self.env.get_db_cnx() cursor = db.cursor() sql = "SELECT s.sid, sa.value FROM sessi
レポートの登録までできるようになったので,いろいろなレポートをつくろうということで,ガントチャートの作成時の効率化や,バーンダウンチャートを作成するためにTracを拡張してみました.そのメモです. やるべきことは 1. IXMLRPCHandlerをインプリしたクラスを作る XMLRPCプラグインのticket.pyとWorklogプラグインのxmlrpc.pyを参照 2. xmlrpc_methodsにメソッドを追加と必要なメソッド追加 (マップ型の)リストを返す,引数がチケット番号(int)のgetWorkHoursメソッドを追加するために次のようにしてメソッドを追加する. def __init__(self): pass def xmlrpc_namespace(self): return 'dependency' def xmlrpc_methods(self): yield ('
これからいろいろ拡張しますが,インポートの部分は変わることはないので,Trac->MS-Project連携のフローを簡単に書いておきます. 複数指定するプロジェクト名で,一番最初に指定したものを,最上位のプロジェクトとして,その中で親になるチケットを検索しタスクに追加していきます.そのチケットの子チケットを全プロジェクト内から検索し追加(再帰で孫以下を追加)します.ここで重要なのは.”このチケットを親チケットに指定しているチケットを,指定したプロジェクトから検索している”こと.出したくないものが入っているプロジェクトは指定しなければよくなるため,上(マネージャ層)向けの工程やWBSレベル,下(メンバー)向けや自分向けなどの作業レベル,などのガントチャートを簡単に作り分けられる. 親になるものをMS-Projectで管理する方法もあったのだけど,そうすると,誰でもどこでもガントチャートを作成
これらを解決するために,私が作ってきたものがどこにからんでくるかということを,次の図にしました.この図ならなんとかわかってもらえるのではないかと 1. InterTracCommitPatch コミットメッセージを,同じサーバ上の隣のプロジェクトにつけることを可能にします.これにより,今までは,要件定義,工程,実作業,障害などは,同じリポジトリを使う必要があため,どれだけ扱う項目(カスタムフィールド)が違っていたとしても,同じプロジェクトで扱うしか方法がありませんでした.これがあれば,リポジトリの縛りから解放され,プロジェクトを自由に分割することができます. 2. TracDepenecencyPlugin 同じサーバのTracプロジェクト間でチケットの親子関係と,依存関係を扱えるように拡張し,Tracのプロジェクトを分割することが容易になります.カスタムフィールドの入力のところのチェック
チケットタイプによってカスタムフィールドが大きく違っていたりして,TicketExtプラグインを使用してもおなじTracで扱うのに無理があるような場合に,複数のTracプロジェクトに分けたいと思うときがあります.しかし,別のTracプロジェクトから同じリポジトリを使うことはできますが,コミットのコメントをどのTracに割り振るかを決めることができなくいので,リポジトリを使うのは一つのTracプロジェクトにまとめる必要がありました.(私が知らないだけかもしれませんが…)それで,InterTracリンクからヒントを得て,trac-post-commit-hookでTracプロジェクトに割り振る仕組みを作ってみました. とにかくちゃんとやるのは面倒なので,とりあえず次のようなコメントが登録されるところまでを作ってみることとします. svn commit -m "refs test2:#4 ref
チケットとカスタムフィールドまでを一気に登録してしまうマクロを作ってみましょう。 カスタムフィールドの追加はチケットを追加した後に、ticket_changeとticket_customを追加します。 Sub appendTicket() ' ループを回ってチケットを追加 Dim cnDatabase As ADODB.Connection Dim rs As New ADODB.Recordset Dim row As Integer cnt = "Driver=SQLite3 ODBC Driver; Database=D:\TracLight\projects\trac\tracplugin\db\trac.db" '**** SQLite3.x Set cnDatabase = New ADODB.Connection cnDatabase.Open cnt Sql = "SELE
VBAそのものがよくわからないんで、何かご指摘があればコメントお願いします。次のリストは、プロジェクトファイルを開いたときに自動で、今あるものを削除してTracのチケットをコピーしてくるマクロです。ADOを使えるようにするのとセキュリティレベル等は適切に変更してください。 「ThisProject.cls」をダウンロード Function getConnectionString() As String getConnectionString = "Driver=SQLite3 ODBC Driver; Database=D:\TracLight\projects\trac\tracplugin\db\trac.db" End Function Function getSqlString(id As Long) As String ' チケットを抽出するためのSQLを作ります Dim Sql
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く