注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

評価関数とオントロジー編集

評価スイートが実行されると、各テストケースのロジック関数が実行されます。オントロジー編集(オブジェクトの作成、編集、削除など)を含む関数の場合、各テストケースはオントロジーシミュレーションで実行されます。これにより、テストおよび評価中に実際のオントロジーが変更されないようにします。

オントロジー編集のためのカスタム評価関数

オントロジー編集を行う AIP ロジック関数の場合、ユーザーは TypeScript でカスタム評価関数を構成する必要があります。Evaluations アプリケーションで評価関数を追加する際に、Code Repositories で関数を作成するか、既存の公開された関数を選択するよう求められます。以下のガイドを参考に、さまざまなオントロジー編集を探求し、それらの評価に TypeScript 関数を効果的に使用する方法を学びましょう。

作成されたオブジェクト

オントロジー編集がオブジェクトの作成を含む場合、作成されたオブジェクトはシミュレーションされたオントロジーにのみ存在します。そのため、これらの作成されたオブジェクトはテストケースのパラメーターとして直接渡すことはできません。代わりに、識別可能なプロパティを使用して検索し、そのプロパティをチェックします。

@Function()
public async checkTicketWasCreated(
    expectedRequester: string,  // 期待されるリクエスター
    expectedDate: LocalDate,    // 期待される日付
    expectedClassification: string,  // 期待される分類
): Promise<boolean> {
    const matches = Objects.search().supportTicket()
        .filter(ticket => ticket.ticketRequester.exactMatch(expectedRequester))  // リクエスターが一致するかフィルタリング
        .filter(ticket => ticket.ticketCreationDate.exactMatch(expectedDate))    // 作成日が一致するかフィルタリング
        .all();  // すべての一致するチケットを取得

    if (matches.length !== 1) {
        return false;  // 一致するチケットが1つでない場合はfalseを返す
    }

    return matches[0].classification === expectedClassification;  // 分類が一致するかどうかを確認
}

編集されたオブジェクト

オブジェクト編集出力タイプの場合、編集されたオブジェクトはすでに実際のオントロジーに存在しています。シミュレートされたオントロジーでは、それを直接関数に渡してプロパティを確認できます。以下の例をご覧ください。

@Function()
public checkTicketClassification(
    ticket: SupportTicket,  // サポートチケットオブジェクト
    expectedClassification: string,  // 期待される分類
): boolean {
    return ticket.classification === expectedClassification;  // チケットの分類が期待される分類と一致するかをチェック
}

削除されたオブジェクト

オントロジー編集でオブジェクトの削除が関わる場合、そのオブジェクトはシミュレートされたオントロジー内で削除されるため、評価関数に渡すことはできません。オブジェクトが実際に削除されたことを確認するには、オブジェクトの識別可能なプロパティを渡し、それが存在しないことを確認するために検索します。

@Function()
public async checkTicketWasDeleted(ticketId: string): Promise<boolean> {
    // 指定されたチケットIDが削除されたかどうかを確認する非同期関数
    const count = await Objects.search().supportTicket()
        .filter(ticket => ticket.ticketId.exactMatch(ticketId))
        // 指定されたチケットIDと完全一致するチケットの数をカウントする
        .count();
    // カウントが0であればチケットは削除されたと判断する
    return count === 0;
}