ストリーム

ここでは、ストリームについてさらに詳しく説明します。

ストリームコンテナ

コンテナとは、複数のストリームを1つのストリームにまとめるものです。 例えば、FileGetコンポーネントで「ループを開始」プロパティを「いいえ」、「ファイルパス」プロパティを「*.csv」と指定し、それにマッチするファイルが3つあった場合、3つのストリームが1つにまとめられ、コンテナとして出力されます。つまり、それぞれ3行、5行、10行のレコードを持つ3つのCSVストリームがコンテナ化された場合、Mapperコンポーネントでは18行のレコードを持つCSVストリームとして扱うことができます。以下のフローで、FileGetコンポーネントの出力は18行のCSVストリームとして扱うことができます。

ストリーム

コンテナには以下の特徴があります。

コンテナはすべてのコンポーネントで入力可能ではありません。 コンテナが入力不可のコンポーネントにコンテナが入力された場合、エラーとなります。 逆にコンテナを展開して使用するコンポーネントも存在します。例えば、SimpleMailコンポーネントでファイルを添付する場合、コンテナ内のストリームの1つ1つを添付ファイルとして使用します。

ストリーム型の変換

ストリーム型の変換とは、あるストリームを別の形式のストリームとして読み替えることです。この機能を使うと、例えばCSVストリームをBinaryストリームに変換することで、CSVストリーム全体をフロー変数に格納したりすることができます。各ストリームはConverterコンポーネントにより他のストリームに変換することができるものとできないものがあります。

メモ

単一フィールドのストリーム(MIME、HTML、TEXT、Binary)以外の複数フィールドが定義できるストリーム型から、同じく複数フィールドが定義できるストリーム型へ変換する場合、フィールドの数と名前を変更することはできません。

ストリーム型変換対応表
入力\出力 Binary (※1) Text (※2) HTML (※3) CSV Fixed XML Record Parameter MIME (※8) JSON
Binary ○ (※4) ○ (※6) ○ (※7) × × ○ *10
Text ○ (※4) ○ (※6) ○ (※7) × × ○ *10
HTML × × ○ (※7) × × ×
CSV × ○ (※5) ○ (※5) × ○ (※5) × ○ *11
FixedLength × ○ (※5) ○ (※5) × ○ (※5) × ○ *11
XML × × ○ (※9) × × ○ *9
Record × ○ (※5) ○ (※5) ○ (※1) ○ (※5) × ○ (※1) ○ *11
ParameterList × ○ (※5) ○ (※5) ○ (※1) ○ (※5) × ○ (※1) ○ *11
MIME × × × × × × ×
JSON × × × ○ *9 × × ○ *9

※1 ストリームのバイナリ値が使用されます。

※2 ストリームの文字列値が使用されます。

※3 HTMLとしての正当性はチェックされません。

※4 入力がCSV形式である場合。

※5 フィールドの対応は名前ではなくインデックスでとられます。また、フィールド定義を変更することはできません。

※6 入力がフィールド定義にそっている場合。

※7 入力がXML形式である場合。

※8 MIMEへの変換はストリーム型に合わせて適切なMIMEヘッダーがつけられます。

※9 入力ストリームがそのまま出力されます。指定したフィールド定義のXMLまたはJSONへと構造が変換されることはありません。

*10 入力がJSON形式である場合。

*11 入力がCSV, FixedLength, またはRecordの場合JSON配列に変換されます。入力がParameterListの場合はJSONオブジェクトに変換されます。

ストリームのデータ表現

すべてのストリームでは、そのデータ内容の表現方法として以下の3種類の表現方法を持っています。

コンポーネントはこれらのいずれかの方法を用いてストリームを操作します。例えば、FilePutコンポーネントはストリームのバイナリ表現を使用してストリームをファイル化します。Mapperコンポーネントはストリームの各フィールドのマッピングをグラフィカルにするときにレコード表現を用います。Velocityコンポーネントでは文字列表現とレコード表現の両方の表現方法を使用することができます。

JSON

XML

CSV

FixedLength

Record

ParameterList

MIME

Text、HTML

Binary

データ型の変換

Mapperコンポーネントでのフィールドや変数への値代入では、データ型は可能な限り暗黙変換されます。変換できない値が入力された場合はエラーが発生します。

データ型変換対応表
入力\出力 Boolean Integer Decimal Double String Binary※1 DateTime
Boolean - ○※2 ○※2 ○※2 ○※3 ×
Integer ○※4 - ○※5
Decimal ○※4 - ○※5
Double ○※4 ○※11 - ○※5
String ○※6 △※9 △※9 △※9 - △※10
Binary ※7 -
DateTime × ○※5 ○※5 ○※5 ○※8 -

○=変換可能、△=フォーマットに依存、×=変換不可

※1 Binaryへの変換は一度Stringに変換されてから、システムのエンコーディングでバイト列化されます(プラットフォーム依存性に注意してください)。

※2 True=1, False=0

※3 True="true", False="false"

※4 0=False, それ以外はTrue

※5 DateTime型は1970 年1月1日 00:00:00 GMT からのミリ秒数として数値型と相互に変換されます。

※6 大文字小文字の区別なしで"true"とマッチする場合True、それ以外はFalse

※7 Binaryからの変換は一度システムのエンコーディングでString化された後に適用されます(プラットフォーム依存性に注意してください)。

※8 フローサービス標準の日付フォーマット(yyyy-MM-dd'T'HH:mm:ss'.'sss z)

※9 十進表記のみ有効(前後の空白は無視されます)

※10 DateTime型の書式を参照

※11 値の小数点は0に近い方に丸められて失われます。

データ型に関わらずnullはすべての型に変換が可能です。 Mapperコンポーネントでフィールドに入力する際に変換に失敗した場合はエラーが発生します。

DateTime型の書式

フローサービス標準の日付書式はISO8601で規定されている「yyyy-MM-dd'T'HH:mm:ss'.'SSS z」形式です。日付型を文字列として書き出す場合はこの形式が使用されます。zはタイムゾーンを表し、’JST’、’+0900’、’GMT-01:00’などのように表記します。タイムゾーンが省略されるとローカルタイムとして処理されます。

また、以下の形式の日付文字列も読み込むことができます。プロパティなどにDateTime値を文字列として設定する場合は下記の形式のいずれかを使用してください。

yyyy-MM-dd'T'HH:mm:ss z
yyyy-MM-dd'T'HH:mm:ss'.'SSS z

また、「yyyyMMdd'T'HHmmss'.'SSS」形式のときに限り、UTC指定子「Z」が直後に付加されている場合はGMTとして取り扱います。

大容量ストリーム

大容量ストリームは、フロー上を流れるデータを一時的にファイルに保存することで、普通のストリームよりもメモリ使用量を大幅に削減することができるストリームです。特に、RDB処理で大量のレコードを処理する場合などに効果を発揮します。

大容量ストリームをサポートするストリーム型は、Record, CSV, FixedLength, Text, Binaryの5種類のストリームです。

大容量ストリームを使用するには、フローの開始コンポーネントで「大容量ストリームを使用する」プロパティを「はい」にします。初期値は「はい」となっておりますので、プロパティの値を変更しない限り大容量ストリームが使用されます。大容量ストリームの指定はそのフローでのみ有効です。

注意

大容量ストリームを使用するとストリームのメモリ使用量は低減されますが、コンポーネントの処理で内部的にメモリを使用する場合は、コンポーネント処理でメモリを大量に使用してエラーが発生することがあります。

 

▲ このページのトップへ