ストーリーが完了した場合に完了したフィーチャーをマークする

このフローは、テスト中のフィーチャーに対してすべてのストーリーが完了した場合に、そのフィーチャーを完了に設定する方法を示しています。

エリア: 作業項目、タスク 

エンティティ関連図

このフローでは、次のエンティティにアクセスし、これらのエンティティ間の関係を理解する必要があります。

エンティティ このフローの関係 関係の説明 参照 /関係フィールド
作業項目 エピック、フィーチャー、不具合、品質ストーリー、ユーザーストーリー この集約リソースコレクションは、エピック、フィーチャー、不具合、ユーザーストーリー、品質ストーリーなど、作業項目のタイプを表します。 subtype
エピック 作業項目

エピックはwork_itemsのサブタイプです。

集約リソースコレクションwork_itemsに関連するフィールドはありません。

 
フィーチャー

エピックはフィーチャーに関連付けることができます。

 
フィーチャー 作業項目

フィーチャーはwork_itemsのサブタイプです。

集約リソースコレクションwork_itemsに関連するフィールドはありません。

 

エピック

フィーチャーはエピックに関連付けることができます。

parent

品質ストーリー、ユーザーストーリー、および不具合

フィーチャーは、ユーザーストーリー、品質ストーリー、および不具合に関連付けることができます。

 
ユーザーストーリー 作業項目

ユーザーストーリーは、work_itemsのサブタイプです。

集約リソースコレクションwork_itemsに関連するフィールドはありません。

 
フィーチャー

ユーザーストーリーはフィーチャーに関連付けることができます。

parent
不具合

ユーザーストーリーは不具合に関連している可能性があります。

 
タスク ユーザーストーリーはタスクに関連付けることができます。 story
品質ストーリー 作業項目

品質ストーリーは、work_itemsのサブタイプです。

集約リソースコレクションwork_itemsに関連するフィールドはありません。

 
フィーチャー

品質ストーリーはフィーチャーに関連付けることができます。

parent
不具合

品質ストーリーは不具合と関連している可能性があります。

 
タスク 品質ストーリーはタスクに関連付けることができます。 story
不具合 作業項目

不具合はwork_itemsのサブタイプです。

集約リソースコレクションwork_itemsに関連するフィールドはありません。

 
フィーチャー

不具合はフィーチャーに関連付けることができます。

parent
ユーザーストーリーと品質ストーリー

不具合は、ユーザーストーリーと品質ストーリーに関連付けることができます。

 
タスク

不具合はタスクに関連付けることができます。

defect
フェーズ フィーチャー、すべてのストーリー、および不具合 フィーチャー、ユーザーストーリー、品質ストーリー、および不具合は、フェーズに関連付ける必要があります。 phase
ユーザー すべての作業項目 エピック、フィーチャー、ユーザーストーリー、品質ストーリー、および不具合は、所有者に関連付けることができます。 owner

トップに戻る

フロー

ステップバイステップでREST API呼び出しを作成しましょう。

  1. テスト中のすべてのフィーチャーを確認したいと思います。

    fields句を使用して、API呼び出しによって返されるフィールドを制御します。すべてのフィールドが自動的に返されるわけではないので、ここでは具体的に説明します。進行中のストーリーのいずれかがタスクに関連付けられているかどうかを確認したいので、フィールドのリストにstory_countを追加します。

    サブタイプfeatureであり、フェーズがまだテスト中である作業項目のみを一覧表示するクエリ句を入力します。And演算子;を使用して、クエリ句を追加します。

    idフィールドを使用してphase参照フィールドを使用し、ステータスを指定します。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/work_items?fields=phase,release,name,id,subtype,user_story_count&query="(subtype EQ ^feature^;phase EQ {id=^phase.feature.intesting^})"

    1つのフィーチャーがテスト中の1018であり、ストーリー数は2です。

    {
        "total_count": 1,
        "data": [
            {
                "type": "work_item",
                "workspace_id": 1002,
                "phase": {
                    "type": "phase",
                    "logical_name": "phase.feature.intesting",
                    "name": "In Testing",
                    "index": 2,
                    "id": "1025"
                },
                "logical_name": "nz9e5ppe8d9egf1o32kvl5mlq",
                "subtype": "feature",
                "release": {
                    "type": "release",
                    "name": "My Release 1",
                    "id": "1001"
                },
                "name": "My Feature 3",
                "id": "1018",
                "user_story_count": 2
            }
        ],
        "exceeds_total_count": false
    }
  2. フィーチャーごとに、対応するストーリーが完了しているかどうかを確認します。

    ここでは、以下をチェックしています。

    • 親の関係を使用した、フィーチャー1018に対応するストーリー: parent={id EQ ^1018^}

    • ストーリーのみで、不具合はありません:サブタイプEQ ^ story ^

    • Not演算子!を使用した、まだ完了していないストーリー:  !phase={id= EQ ^phase.story.done^}

    演算子;を使用して、Andロジックで複数のクエリ句を分離します。

    この例は、参照フィールドの使用法も示しています。 

    • idフィールドを使用して、parent参照フィールドを使用して、フィーチャーを指定します。

    • idフィールドを使用してphase参照フィールドを使用してフェーズを指定します。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/work_items?fields=phase,release,name,parent,id,subtype&query="(parent EQ {id EQ ^1018^};subtype EQ ^story^;!phase EQ {id EQ ^phase.story.done^})"

    応答には、新しい2つのユーザーストーリー1019と1020が表示されます。 

    {
        "total_count": 2,
        "data": [
            {
                "type": "work_item",
                "workspace_id": 1002,
                "phase": {
                    "type": "phase",
                    "logical_name": "phase.story.new",
                    "name": "New",
                    "index": 0,
                    "id": "1027"
                },
                "parent": {
                    "type": "feature",
                    "name": "My Feature 3",
                    "id": "1018"
                },
                "logical_name": "9p06wk981gremb0zj1n17xzdr",
                "subtype": "story",
                "release": {
                    "type": "release",
                    "name": "My Release 1",
                    "id": "1001"
                },
                "name": "User Story 400",
                "id": "1019"
            },
            {
                "type": "work_item",
                "workspace_id": 1002,
                "phase": {
                    "type": "phase",
                    "logical_name": "phase.story.new",
                    "name": "New",
                    "index": 0,
                    "id": "1027"
                },
                "parent": {
                    "type": "feature",
                    "name": "My Feature 3",
                    "id": "1018"
                },
                "logical_name": "1e7jx1jegjmnmh0rolyglx2v6",
                "subtype": "story",
                "release": {
                    "type": "release",
                    "name": "My Release 1",
                    "id": "1001"
                },
                "name": "User Story 401",
                "id": "1020"
            }
        ],
        "exceeds_total_count": false
    }

    対応するすべてのユーザーストーリーが実行された場合、これは次の結果になります。 

    {
        "total_count": 0,
        "data": [],
        "exceeds_total_count": false
    }
  3. すべてのユーザーストーリーが完了したら、フィーチャーのフェーズを完了に設定することもできます。 

    PUT .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/work_items//1018

    {
       "phase":{ 
            "type":"phase",
            "id":"phase.feature.done"
           },
    }

    ヒント:

    集約リソースコレクションwork_itemsを操作する代わりに、フィーチャーリソースを操作することもできます。 

    PUT .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features//1018/

トップに戻る

参照情報: