概要
二つのシステム間でプロジェクト情報を同期するときに使います。
このとき、syncPj を直接実行するのではなく gss2redmine.py のように同期用ラッパーを用意し、その中で機能を呼び出します。
ラッパー
ラッパー内では
- 同期元システム
- 同期先システム
- 同期するパラメータ
を指定し、 syncPj を実行します。
以下に gss2redmine の例を上げます。
1 from xlgan import syncPj
2
3 from xlgan.conf import gssConfig
4 from xlgan.conf import redmineConfig
5
6 (中略)
7
8 #GoogleSpreadSheet オブジェクトと Redmine オブジェクトを用意
9 gssInst = gss.gss(sheetId, glb, gssConfig.gssConfig)
10 redmineInst = Redmine.Redmine(redmineConfig.redmineConfig)
11
12 # 同期するパラメータを指定
13 gss2redmineMap = {
14 'Variation': {
15 'status': 'status',
16 'due_start_date': 'due_start_date',
17 'due_end_date': 'due_end_date',
18 'assignee': 'assignee'
19 }
20 }
21
22 # 同期
23 sp = syncPj.SyncProject(gssInst, redmineInst, gss2redmineMap)
24 sp.sync(glbType, dryRun=dryRun)
同期処理
アセット情報の登録
同期元に存在するのに同期先に存在しないタスクは新規作成する。逆に同期元に存在せず同期先に存在するタスクはそのままとなります。
同期するパラメータの指定
同期するパラメータは syncPj.SyncProject の三番目の引数で指定します。ここの キーが同期元のパラメータ名、値が同期先のパラメータ名になります。 パラメータ名は各 gssConfig と redmineConfig 内で定義されています。
パラメータ名定義
パラメータ名の定義はバックエンド用設定ファイル(たとえば xlgan.conf.gssConfig)の中で設定されています。 先ほどの gss2redmineMap の場合、Variation ノードで status, due_start_date, due_end_date, assignee が指定されています。 ここに該当するのは gssConfig では以下の fields で定義されています。
1 'Variation': {
2 'name': '*',
3 'type': 'Variation',
4 'cls': gss.TaskVariation,
5 'children': [],
6 'params': [gssTaskVariationParamGetter,
7 gssTaskVariationParamSetter],
8 'options': {
9 'header': 'F4',
10 'taskHeader': 'F5',
11 'fields': {
12 'description': u'概要',
13 'assignee': u'担当',
14 'status': u'Status',
15 'due_start_date': u'IN予定',
16 'due_end_date': u'UP予定',
17 'start_date': u'IN実績',
18 'end_date': u'UP実績',
19 }
20 }
21 },