注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
2022年7月より前は、Foundry Rules(旧称 Taurus)を実行するために、ユーザーが独自のトランスフォームを作成する必要がありました。このセクションは、2022年7月より前に Foundry Rules をデプロイした場合にのみ該当します。
Workshop アプリケーションでルールを作成し、レビューすると、コード化されたロジックがトランスフォームの一部として適用されます。このセクションでは、トランスフォームの各コンポーネントと、ユースケースに合わせた設定方法を説明します。トランスフォームの大部分は、デフォルトのデプロイによってあらかじめ設定されます。ただし、ワークフローを拡張する場合は、追加の手順が必要になることがあります。
Foundry Rules のトランスフォームをデプロイすると、トランスフォームは次の例のようになります。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52public final class FoundryRulesTransformExample { // 以下の RID を置き換えるだけでなく、関連するオブジェクトタイプもインポートする必要があります。 // また、リレーションも、上の「Settings」タブの「Ontology」セクションを使ってプロジェクトにインポートする必要があります。 @AdditionalInputs public static Set<InputSpec> additionalInputs = ImmutableOntologyInputs.builder() .addObjectRids("ri.ontology.main.object-type.4168ed49-00...") // 従業員 // .addLinkRids("...") // add all referenced relations .ontologyRid("ri.ontology.main.ontology.00000000-0000-0000-0000-000000000000") .ontologyBranchRid("ri.ontology.main.branch.00000000-0000-0000-0000-000000000000") .build() .getInputSpecs(); @Compute public void compute( @Input("ri.foundry.main.dataset.0000...") FoundryInput source_object_backing_dataset, @Input("ri.foundry.main.dataset.0000...") FoundryInput rules_input, @Output("ri.foundry.main.dataset.0000...") FoundryOutput outcome_output, @Output("REPLACE WITH PATH TO WRITE STATUS DATASET TO") FoundryOutput rule_status_output, TransformContext transformContext) { Dataset<Row> source = source_object_backing_dataset.asDataFrame().read(); Dataset<Row> rulesDataset = rules_input.asDataFrame().read(); // Taurus Rule Runner を設定する Args ruleRunnerArgs = new TaurusRuleRunner.Args.Builder() .rules(new Rules.Builder() .logicColumnName("RuleLogic") .ruleIdColumnName("RuleId") .dataset(rulesDataset) .build()) // Foundry Rules エディターの Workshop アプリで使うすべてのソースをここに指定します(データセットの場合、ここでの名前は // Foundry Rules アプリ内のデータセット名と一致する必要があります)。 .putSources(SourceReference.objectTypeId("employee"), source) // .putSources(SourceReference.dataset(DatasetName.of("name in Foundry Rules app")), dataset) // 多対多のオントロジー結合テーブルを使う場合に必要です。 // .manyToManyJoinTables(ImmutableMap.of(LinkTypeId.of("relation-id"), dataset)) // ルール実行の出力をルールエディターウィジェットのプレビューと一致させるには、true に設定します(このフラグはデフォルトでは false です)。 // .shouldMatchContourExecutionBehavior(true) .context(transformContext) .build(); // Spark を使ってルールを実行します(遅延評価)。 RuleEffects ruleEffects = TaurusRuleRunner.runRules(ruleRunnerArgs); // 指定したアクションを使うすべてのルールの結果を取得します。 Dataset<Row> outcomes = ruleEffects.actionReadyMergedDataset( ActionTypeRid.valueOf("ri.actions.main.action-type.b6f052c7-f7b1-4b4f-83ee-f81d9e854114")); outcome_output.getDataFrameWriter(outcomes).write(); rule_status_output.getDataFrameWriter(ruleEffects.statusDataset()).write(); } }
@AdditionalInputs を使用してオントロジー入力を追加するCopied!1 2 3 4 5 6 7 8@AdditionalInputs public static Set<InputSpec> additionalInputs = ImmutableOntologyInputs.builder() .addObjectRids("ri.ontology.main.object-type.4168ed49-00...") // 従業員 // .addLinkRids("...") // add all referenced relations .ontologyRid("ri.ontology.main.ontology.00000000-0000-0000-0000-000000000000") .ontologyBranchRid("ri.ontology.main.branch.00000000-0000-0000-0000-000000000000") .build() .getInputSpecs();
@AdditionalInputs を使用すると、Foundry Rules で使用するオブジェクトタイプのメタデータにアクセスするための権限を付与できます。Foundry Rules の Workshop アプリケーションで使用するように設定されたオブジェクトタイプは、すべてここに追加する必要があります。最初のオブジェクトタイプの RID はデフォルトで入力されますが、ワークフローテンプレートをデプロイするセクションの手順で追加したオブジェクトは、追加の .addObjectRids() エントリとして追加する必要があります。
また、Workshop アプリケーションで使用する_リレーション_も、.addLinkRids() エントリとしてここに追加する必要があります。オブジェクトタイプの RID は Ontology Manager のオブジェクトタイプページから、リレーションの RID はリレーションページから取得できます。
これらのエントリを追加した後、コードリポジトリの設定タブにあるオントロジー・インポートヘルパーを使用して、オブジェクトタイプとリレーションをプロジェクトにインポートする必要もあります。

Copied!1 2 3 4 5 6@Compute public void compute( @Input("ri.foundry.main.dataset.0000...") FoundryInput source_object_backing_dataset, @Input("ri.foundry.main.dataset.0000...") FoundryInput rules_input, @Output("ri.foundry.main.dataset.0000...") FoundryOutput outcome_output, @Output("REPLACE WITH PATH TO WRITE STATUS DATASET TO") FoundryOutput rule_status_output,
このセクションでは、アプリケーションの Foundry Rules で使用するすべての入力のデータを指定します。これには、Foundry Rules で使用するオブジェクトの元データセットと多対多の結合テーブルが含まれます。デフォルトでは、これらのいくつかが事前に入力されています。
ただし、ワークフローテンプレートのデプロイ中に追加したオブジェクトやデータセットは、新しい @Input エントリとしてここに追加する必要があります。これらのデータセットは、後で TaurusRuleRunner.Args の一部として必要になります。
また、rule_status_output の出力先のパスを指定する必要があります。このデータセットには、正常に実行されなかったルールの詳細が含まれ、デバッグに役立ちます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17// Foundry Rules のルールランナーを設定する Args ruleRunnerArgs = new TaurusRuleRunner.Args.Builder() .rules(new Rules.Builder() .logicColumnName("RuleLogic") .ruleIdColumnName("RuleId") .dataset(rulesDataset) .build()) // Foundry Rules エディターの Workshop アプリで使うすべてのソースをここに指定します(データセットの場合、ここでの名前は // Foundry Rules アプリケーション内のデータセット名と一致する必要があります)。 .putSources(SourceReference.objectTypeId("employee"), source) // .putSources(SourceReference.dataset(DatasetName.of("name in Foundry Rules app")), dataset) // 多対多のオントロジー結合テーブルを使う場合に必要です。 // .manyToManyJoinTables(ImmutableMap.of(LinkTypeId.of("relation-id"), dataset)) // ルール実行の出力をルールエディターウィジェットのプレビューと一致させるには、true に設定します(このフラグはデフォルトでは false です)。 // .shouldMatchContourExecutionBehavior(true) .context(transformContext) .build();
このセクションでは、rulesDataset で指定された Foundry Rules のルールを最終的に実行するルールランナー(TaurusRuleRunner)を設定します。このセクションも、ほとんどがデフォルトで事前設定されていますが、入力データセットと出力データセットで説明したように、追加の入力は、.putSources() エントリを追加して TaurusRuleRunner に登録する必要があります。また、Foundry Rules で設定されたオブジェクト間で使用する多対多の結合テーブルは、上の例のように .manyToManyJoinTables() を使用してここに登録する必要があります。
Copied!1 2 3 4 5RuleEffects ruleEffects = TaurusRuleRunner.runRules(ruleRunnerArgs); Dataset<Row> outcomes = ruleEffects.actionReadyMergedDataset( ActionTypeRid.valueOf("ri.actions.main.action-type.b6f052c7-f7b1-4b4f-83ee-f81d9e854114")); outcome_output.getDataFrameWriter(outcomes).write();
ルールアクションは、Foundry Rules のルール群に共通の出力スキーマとして機能します。.runRules() を使用してすべてのルールを実行した後、必要なアクションのアクションタイプ RIDを指定して .actionReadyMergedDataset() を呼び出すと、特定のルールアクションのすべての結果行を取得できます。この RID は、Ontology Manager のアクションタイプのビューで確認できます。

返されたデータセットは、上の例のようにトランスフォームの出力に書き込めます。このデータセットには、アクションの各アクションパラメーターに対応する列に加えて、その行の生成元のルールIDを格納する Foundry Rules_rule_id 列が含まれます。
Workshop アプリに追加したルールアクションは、例をコピーし、アクションタイプの RID を置き換えて、入力データセットと出力データセットセクションで説明したように新しい出力データセットを追加することで、ここに含めることができます。
トランスフォームまたは CI チェックの実行中にエラーが発生した場合は、トラブルシューティングリファレンスを確認してください。
Palantir の担当者が設定している場合は、上記のトランスフォームの参照実装を利用できることがあります。Business Rules with Rules Workflow フォルダーを検索するか、Foundry Training and Resources プロジェクトに移動し、Reference Examples → Application Development in Workshop → Business Rules with Rules Workflow に移動します。
ここには、航空分野のサンプルオントロジー上に実装された、テンプレートの Workflow アプリケーションとトランスフォームパイプラインがあります。