値のキー名がわからない場面に遭遇します。ワークフロー定義を参照してあれこれやろうとすると遭遇する問題です。値のキー名を列挙してみたのでそのやり方をメモしておきます。その際の取得結果は、大体月のような構造になります。値として配列な形で記載されます。この時のキー名はデザイナー上で命名したものが利用されますので、どのようなキー名となるかは固定できません。値を利用しようとすると、非常に厄介です。今回はこのアクション情報を、1次元の配列に鳴らした形に変換します。作成した変換用ワークフローの全体図は次のようなものです。よる処理を行うのが、最も楽です。次のコードだけで対応できます。メソッドを利用すると、キー名の列挙が行えます。子要素については列挙されませんので、その部分をどうするかが一番の問題となります。いう子要素があるかどうかチェック、ある場合は子要素の解析を行うという処理方法を採用しています。これで各要素に子要素があるかを判断させるようにします。関数で明示的に配列へと変換したうえでループを行う必要があります。子要素の存在チェックですが、次のような聞き方をしています。いう子要素があるかどうか、という聞き方です。子要素を参照しに行かせています。演算子を利用することで、実際には要素が存在していない場合でも実行時エラーになることを防いでおり、参照できた場合はその値、できなかった場合は空文字列が返却されてきます。関数で「値があるかないか」を判別させ、値がある=子要素がある、値がない=子要素がない、という形で判定を行います。子要素が存在した場合は、その子要素のキー名を列挙させる必要があります。要素があり、その中で実際に配置された子アクション「エラーとなる計算」が記載されているのがわかると思います。階層まで深く作ることができてしまいます。階層組み上げることになるのですが、流石にそれはワークフローとして見づらいものとなります。このような場合、プログラム開発を行ったことがある人であればお気づきでしょうが、再帰的処理、という方法を採用します。これは自分自身を呼び出す方法で、階層が深い場合には適した手法です。アクションを利用します。することで、別インスタンスとして同じ処理を起動させ、子要素のものからキー名を列挙させることができます。アクションを設定しています。処理結果をループさせて追加しています。ワークフローを呼び出し、結果を確認してみると、ワークフロー定義の情報からアクションを列挙できているのがわかるかと思います。情報を渡すことで、アクション情報を列挙することが可能です。これは特定の値だけを抽出して1次元配列に変換する、というパターンですので、色々と応用が利く場面があると思います。