注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
2022年7月まで、Foundry Rules(以前はTaurusとして知られていました)はユーザーに自分自身のトランスフォームを作成してFoundry Rulesを実行するように求めていました。このセクションは、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
public final class FoundryRulesTransformExample { // 下記のRIDを置き換える他にも、必要なオブジェクトタイプや関係を'設定'タブの'オントロジー'セクションを使用してプロジェクトにインポートする必要があります @AdditionalInputs public static Set<InputSpec> additionalInputs = ImmutableOntologyInputs.builder() .addObjectRids("ri.ontology.main.object-type.4168ed49-00...") // 従業員 // .addLinkRids("...") // 参照されている全ての関係を追加 .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("状態データセットを書き込むパスに置き換えてください") FoundryOutput rule_status_output, TransformContext transformContext) { Dataset<Row> source = source_object_backing_dataset.asDataFrame().read(); Dataset<Row> rulesDataset = rules_input.asDataFrame().read(); // Taurusルールランナーの設定 Args ruleRunnerArgs = new TaurusRuleRunner.Args.Builder() .rules(new Rules.Builder() .logicColumnName("RuleLogic") .ruleIdColumnName("RuleId") .dataset(rulesDataset) .build()) // Foundry Rules editor 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("...") // 参照される全ての関係を追加 .ontologyRid("ri.ontology.main.ontology.00000000-0000-0000-0000-000000000000") .ontologyBranchRid("ri.ontology.main.branch.00000000-0000-0000-0000-000000000000") .build() .getInputSpecs();
In this block of code, the @AdditionalInputs
annotation is used to provide additional inputs to the ontology. The ImmutableOntologyInputs.builder()
method is used to create an instance of ImmutableOntologyInputs
, which is then used to add an object, reference all related links, and specify the ontology and ontology branch Rids. The getInputSpecs()
method is used to retrieve the specifications of these inputs.
@AdditionalInputs
を使用して、Foundry Rulesで使用されるオブジェクトタイプのメタデータへのアクセス権を提供できます。Foundry Rules Workshopアプリケーションで使用する設定された任意のオブジェクトタイプはここに追加する必要があります。最初のオブジェクトタイプRIDはデフォルトで入力されますが、deploy workflow templateセクションの一部として追加された追加のオブジェクトは、追加の .addObjectRids()
エントリとして追加する必要があります。
さらに、Workshopアプリケーションで使用される任意の 関係 も、.addLinkRids()
エントリとしてここに追加する必要があります。RIDは、オブジェクトタイプと関係のページを使用して、オントロジー管理者から取得できます。
これらのエントリを追加した後、Code Repositoryの設定タブ内のオントロジーインポートヘルパーを使用して、プロジェクトにオブジェクトタイプと関係をインポートする必要があります。
Copied!1 2 3 4 5 6 7 8 9 10
@Compute public void compute( // "ri.foundry.main.dataset.0000..."という入力元からデータを読み込む @Input("ri.foundry.main.dataset.0000...") FoundryInput source_object_backing_dataset, // "ri.foundry.main.dataset.0000..."という入力元からルールを読み込む @Input("ri.foundry.main.dataset.0000...") FoundryInput rules_input, // "ri.foundry.main.dataset.0000..."という出力先へ結果を書き出す @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() // ルールのロジックとID、使用するデータセットを指定 .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("Foundry Rulesアプリ内の名前")), dataset) // 多対多のオントロジージョインテーブルを使用する場合は必要: // .manyToManyJoinTables(ImmutableMap.of(LinkTypeId.of("relation-id"), dataset)) // ルール実行の出力がルールエディタウィジェットのプレビューと一致することを確認するためにtrueに設定します(このフラグはデフォルトでfalseです) // .shouldMatchContourExecutionBehavior(true) .context(transformContext) .build();
このセクションでは、rulesDataset
で提供されるFoundryのルールを最終的に実行するルールランナー(TaurusRuleRunner
)を設定します。このセクションはデフォルトでほとんど設定済みですが、入力と出力のデータセットで説明されているように、追加の入力は、追加の.putSources()
エントリを追加することでTaurusRuleRunner
に登録する必要があります。また、Foundryのルールで設定されたオブジェクト間で使用される多対多結合テーブルは、上記の例のように.manyToManyJoinTables()
を使用してここで登録する必要があります。
Copied!1 2 3 4 5 6 7 8 9 10 11
// TaurusRuleRunnerのrunRulesメソッドを使用して、ルールを実行します。 // ruleRunnerArgsはルール実行に必要な引数です。 RuleEffects ruleEffects = TaurusRuleRunner.runRules(ruleRunnerArgs); // actionReadyMergedDatasetメソッドを使用して、特定のアクションタイプに対する結果のデータセットを取得します。 // 取得したいアクションタイプは"ri.actions.main.action-type.b6f052c7-f7b1-4b4f-83ee-f81d9e854114"と指定されています。 Dataset<Row> outcomes = ruleEffects.actionReadyMergedDataset( ActionTypeRid.valueOf("ri.actions.main.action-type.b6f052c7-f7b1-4b4f-83ee-f81d9e854114")); // getDataFrameWriter(outcomes)メソッドを使用して、出力用のDataFrameWriterを取得し、writeメソッドでデータを書き出します。 outcome_output.getDataFrameWriter(outcomes).write();
Rule Actionsは、Foundry のルールの集合に対する一般的な出力スキーマとして機能します。.runRules()
を使用してすべてのルールを実行した後、特定のルールアクションのすべての結果行を取得するために、必要なアクションのアクションタイプRIDを引数にして.actionReadyMergedDataset()
を呼び出すことができます。このRIDは、オントロジーマネージャーのアクションタイプビューで見つけることができます。
返されるデータセットは、上記の例のように変換の出力に書き込むことができます。このデータセットには、アクションのパラメーターごとに1つの行と、行の起源となるルールの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へと進みます。
ここでは、例示された航空オントロジーの上に実装されたテンプレートのワークフローアプリケーションと変換パイプラインを見つけることができます。