アプリケーションの構築Workshop動的スケジュール提案機能

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

提案機能

スケジューリングやリソース割り当てのワークフローにおいて、特定のイベントがどこで、いつ発生するか、またはどこに移動できるかを知ることは重要な課題です。ほとんどのスケジュールには制限があり、すべてのスケジュールオプションが同等に適切なわけではありません。これらの制限と基準をロジックに組み込むことで、ツールはユーザーが選択肢を迅速に評価するのに役立ちます。提案機能は、組織が定義したロジックに基づいてスケジュールオブジェクトパックの配置の適切性を視覚的に示すことで、ユーザーの行動を導きます。

各提案機能は TypeScript の関数によって支えられています。ルールロジックの出力は、割り当てが可能な領域や、逆に割り当てが不可能な領域を強調表示するために使用できます。アプリケーションビルダーは、Workshop ウィジェットの設定でこれらの提案を強制するオプションを持っています。この機能がオンになっていると、パックの配置が最も近い強調表示された領域に強制されます。

スケジューリングガントチャートの提案機能の結果は静的です。関数は初期アプリケーションのロード時に実行され、その後の行動は考慮されません。これはこの機能がユーザーのワークフローに適しているかどうかの影響を及ぼします。

以下は、提案機能が効果的に使用できる2つの例です。

以下の画像では、提案機能が、割り当てられる個人(この場合、「Susan」)の好みの場所を示すように書かれています。緑色のエリアは、Garden City が Susan の好みの場所であることを示し、灰色の Sandbar は好まれません。

Example: Suggestion function interface.

下の例では、アプリケーションがパイロットにフライトを割り当てるために使用されています。時間の垂直スライス(緑色)は、スケジューラーに対してフライトの開始/終了時間を調整せず、パイロットである個人だけを調整すべきであることを示しています。

Example: Suggestion function interface.

関数インターフェース

以下のタイプは、行またはパックからトリガーされたときに検索機能を書くために必要な情報を表しています。これには、検索グループの詳細が含まれます。

/*
   Suggestion関数は、パックのプライマリキーのリストと
   ガントの開始/終了時間を入力として受け取り、パックのプライマリキーのマッピングを
   行のプライマリキーのマッピングに返します。このマッピングは時間スロットの配列になります。
*/


type ISuggestion = (
    scheduleObjectPrimaryKeys: string[],
    domainStart: Timestamp,
    domainEnd: Timestamp,
) => FunctionsMap<string, FunctionsMap<string, Array<ISuggestionSlot>>>

/* Suggestionのタイプ */

export interface IDomain {
    start: Long;
    end: Long;
}

/* ratingはウィジェットUIのハイライト色を決定するために使用されます。
   スケールは-1から1までです。1に近いほど、ハイライトは緑色の濃い色合いになります。
   -1に近いほど、ハイライトは赤色になります。
*/

export interface ISuggestionSlot {
    domain: IDomain;
    rating: Float;
}

export type IValidSlots = Array<ISuggestionSlot>;
export type ISlotMappings = FunctionsMap<string, IValidSlots>;
export type ISuggestionResult = FunctionsMap<string, ISlotMappings>;


/*
  スケジュールオブジェクトに固定の開始/終了時間が設定されていて、割り当てられたリソースだけが変更される
  ワークフロー(垂直スライスが強調表示)では、ALL_ROWS_IDをショートカットとして使用できます。
*/

export const ALL_ROWS_ID = "__ALL_ROWS";