DataPluginを用意する
ここではまず3つのカスタムプロパティを読み込むことのできるDataPluginを使用して、サンプルデータを読み込み、データベースを作成します。その後、DataPluginの内容を一部変更し、追加の2つのカスタムプロパティを読み込むことのできるDataPluginに更新します。
1. DataPluginの作成
最初に使用するDataPluginは下記のスクリプトです。DataPluginの作成方法とスクリプトの更新方法は
こちらの資料で確認できます。
Option Explicit
Sub ReadStore(File)
'Provide the file object with information about the file format
File.Formatter.LineFeeds = vbNewLine
File.Formatter.IgnoreEmptyLines = true
File.Formatter.TrimCharacters = " "
File.Formatter.Delimiters = ";"
File.Formatter.ThousandSeparator = "."
'Read the name of the source out of the first line of the file.
Dim TitleValue : TitleValue = File.GetNextStringValue(eString)
Call Root.Properties.Add("Name", TitleValue)
'Read the description of the implicit channel out of the second line of the file.
File.SkipLine() 'Advance to the next line.
Dim ChannelName : ChannelName = File.GetNextStringValue(eString)
Dim StartValue : StartValue = File.GetNextStringValue(eI32)
Dim Increment : Increment = File.GetNextStringValue(eI32)
Dim ChannelSize : ChannelSize = File.GetNextStringValue(eI32)
'Create the implicit channel.
Dim ChannelGroup : Set ChannelGroup = Root.ChannelGroups.Add("MyChnGroup")
Call ChannelGroup.Channels.AddImplicitChannel(ChannelName, StartValue, Increment, ChannelSize, eI32)
'Read the root's properties out of the file
File.Formatter.Delimiters = ":" 'Properties and their values are seperated by a ":"
Dim PropertyName, PropertyValue, i
For i = 1 to 5
File.SkipLine() 'Advance to the next line.
PropertyName = File.GetNextStringValue(eString)
PropertyValue = File.GetNextStringValue(eString)
'Create the property on the root of the plugin.
Call Root.Properties.Add(PropertyName, PropertyValue)
Next
End Sub
2. データの読み込みとカスタムプロパティの確認
読み込むサンプルデータはAttachmentsのEX1SampleData.zipフォルダの*.ex1形式の物を使用します。DIAdem, SystemLinkでDataPluginを使用してデータを読み込む方法は
こちらの資料で確認できます。サンプルデータをDataFinderインスタンスでインデックス化し、カスタムプロパティを最適化すると下記の様に3つのカスタムプロパティを確認できます。
Analysisインスタンスの作成
EX1SampleData.zipフォルダSample.anpを使用してAnalysisインスタンスを作成します。手順は
こちらの資料の「解析自動化でレポートを自動作成する」で確認出来ます。上記の3つのカスタムプロパティはデータナビゲーションで使用可能なことが確認できます。
DataPluginの更新
1. DataPluginを更新する
DataFinderインスタンス、Analysisインスタンスの動作を確認後、DataPluginを更新し、2つの追加のグループカスタムプロパティ(Custom1, Custom2)を読み込みます。スクリプトは下記の物を使用します。
Option Explicit
Sub ReadStore(File)
'Provide the file object with information about the file format
File.Formatter.LineFeeds = vbNewLine
File.Formatter.IgnoreEmptyLines = true
File.Formatter.TrimCharacters = " "
File.Formatter.Delimiters = ";"
File.Formatter.ThousandSeparator = "."
'Read the name of the source out of the first line of the file.
Dim TitleValue : TitleValue = File.GetNextStringValue(eString)
Call Root.Properties.Add("Name", TitleValue)
'Read the description of the implicit channel out of the second line of the file.
File.SkipLine() 'Advance to the next line.
Dim ChannelName : ChannelName = File.GetNextStringValue(eString)
Dim StartValue : StartValue = File.GetNextStringValue(eI32)
Dim Increment : Increment = File.GetNextStringValue(eI32)
Dim ChannelSize : ChannelSize = File.GetNextStringValue(eI32)*10
'Create the implicit channel.
Dim ChannelGroup : Set ChannelGroup = Root.ChannelGroups.Add("MyChnGroup")
Call ChannelGroup.Channels.AddImplicitChannel(ChannelName, StartValue, Increment, ChannelSize, eI32)
'Read the root's properties out of the file
File.Formatter.Delimiters = ":" 'Properties and their values are seperated by a ":"
Dim PropertyName, PropertyValue, i
For i = 1 to 5
File.SkipLine() 'Advance to the next line.
PropertyName = File.GetNextStringValue(eString)
PropertyValue = File.GetNextStringValue(eString)
'Create the property on the root of the plugin.
Call Root.Properties.Add(PropertyName, PropertyValue)
Next
File.Formatter.Delimiters = ";"
While (File.Position <> File.Size)
File.SkipLine() 'Advance to the next line.
PropertyName = File.GetNextStringValue(eString)
PropertyValue = File.GetNextStringValue(eString)
Call Root.ChannelGroups(1).Properties.Add(PropertyName, PropertyValue)
Wend
End Sub
上記のスクリプトは更新前のスクリプトと比較すると下記の赤枠の部分が変化しています。赤枠の部分ではデータの配列の長さを10倍にしています。また、追加のプロパティをグループプロパティとして読み込む設定が追加されています。この追加のプロパティとはサンプルデータの10.ex1, 11.ex1, 12.ex1の3つに含まれているCustom1, Custom2です。
2. データベース
DataPluginをDIAdem上で書き換えたのち、保存すると、SystemLink上で使用されているDataPluginも自動的に置き換わります。ただし、データベースそのものは
インデックスのリセットを行わない限り作り直されることはなく、過去に作成したデータベースを変更するには
インデックスのリセットでデータベースを0から作成し直す必要があります。非常に多くのプロパティを最適化し、データベースの大きさ(インデックスサイズ)が大きくなりすぎた場合なども、データベースを小さくするには最適化するプロパティの数を減らし、インデックスのリセットを行い、データベースを0から作り直す必要があります。
3. DataPlugin更新前後のデータベースを比較する
DataPlugin更新前に1.ex1と10.ex1をインデックス化しておき、DataPlugin更新後に11.ex1をDataFinderインスタンスが監視しているフォルダにコピーし、インデックス化すると、更新後のDataPluginによって読み込むことのできる2つのグループプロパティが読み込まれます。
このグループプロパティを最適化し、インデックスの最適化を行い、上級統計を調べると、合計3(1.ex1, 10.ex1, 11.ex1にそれぞれ1つずつグループチャンネルが存在)、個別のカスタムプロパティと最適化されたカスタムプロパティが2(Custom1とCustom2はどちらも最適化されている為)であることが確認できます。一方、カスタムプロパティは2となっており、これは11.ex1の2つのカスタムプロパティしかデータベースには登録されていないことが確認できます。Custom1とCustom2のグループプロパティは本来、10.ex1にも存在はしているにもかかわらず、更新前のDataPluginはこれらのプロパティを読み込むことができなかった為、10.ex1のこれらのプロパティはデータベース上に存在しません。
このような状態はデータが読み込まれた時のDataPluginによってデータベース上のメタ情報が違うという状態になる為、データナビゲーションで追加のカスタムプロパティを使用した検索はできません。また、全ての計測データが統一されたフォーマットでデータベースに登録されている状態ではなくなってしまう為、データ管理の面からも好ましくない状態となります。
4. インデックスのリセット
このような状況を解決するには
インデックスのリセットを行い、既存のデータベースを破棄し、新しいDataPluginですべてのデータを再度読み込み、再度データベースを作成し直します。
インデックスのリセットを行った後、上級統計を調べるとカスタムプロパティが4となります。これは10.ex1が更新後のDataPluginで読み込まれ、データベース上に10.ex1のグループプロパティが2つ追加された事を示しています。
また、新しいDataPluginでデータベースを作成し直す事で、新しいDataPluginによって追加された2つのグループプロパティをデータナビゲーションの検索条件として使用できるようになります。
インデックスのリセットによりデータベースを作成し直す事で、DataPluginの更新は完了します。
ただし、DataFinderインスタンスにおいて、「トリガされたタスク」、「スケジュールされたタスク」、「連続スキャン」を使用している場合、
インデックスのリセットなどのデータベースを変更する操作は、解析タスクをトリガする為、解析自動化で指定されている処理が実行される事で以前作成したレポートやデータを上書きします。
DataPlugin及びデータベース更新時の解析自動化の挙動
1. 解析自動化プロシージャのタスク
トリガされたタスクによる自動解析はAnalysisインスタンスを停止する事で動作を停止する事ができます。Analysisインスタンス停止中に
インデックスのリセットを行い、再度Analysisインスタンスを再開する事で過去に解析したデータを再度解析し、レポートを上書きする挙動を防ぐことができますが、これは完璧な対処方法ではありません。
例えば
スケジュールされたタスクは定期的に全データベースの変更点を確認する為、スケジュールされたタスクにより、過去のデータベースとの変更点がある事が確認され、自動解析が実行され、レポートや出力結果が上書きされる場合があります。また、データベースが何らかの理由によって更新された場合も
トリガされたタスクにより解析が実行される為、結果が上書きされます。例えば
データインデックス作成の
システムステータスにおいて、
ファイルインデックスの再構成を行った場合、データベースが作成され直す為、
トリガされたタスクにより解析が実行されます。
DataPluginを更新する場合、更新前の解析結果が必要となる場合、DataPlugin更新前に解析自動化の解析自動化プロシージャのタスク設定において、解析結果の出力先フォルダを変更する、もしくは過去の解析結果を別のフォルダに保存しておく事を推奨します。
DataPlugin更新時のデータナビゲーションの挙動
1. データナビゲーション
DataPluginの更新を行う場合、データの構造や内容そのものを変更する事もできます。DataPlugin更新によるこれらの変更点の適応のタイミングはDataPluginにおける変更内容によって変化します。主な判断材料はデータベースに変更点が発生するかどうかという点になります。
例えばこの資料のDataPluginではデータの長さを変更している部分があります。更新前のDataPluginに対して、データの長さのみを変更した場合、DataFinderインスタンスの停止と開始を行うだけでデータナビゲーションからデータを閲覧した際にデータの長さが変化している事を確認できます。一方、カスタムプロパティの追加、変更が伴う場合、インデックスのリセットを行い、データベースを作成し直す操作を行わなければデータナビゲーションでは過去のデータが表示されます。
一部の変更がDataFinderインスタンスの再起動により即座に反映される理由は下記の図から理解できます。DataFinderが管理しているデータベースには閲覧対象の計測データの実際の配列データは含まれておらず、それらのデータのメタ情報や使用しているDataPlugin名などの情報を管理しています。クライアントPCなどからデータナビゲーション経由で実際のデータを閲覧する場合、DataPluginを使用して実際のデータを読み取るので、実際にデータを読み取る環境のDataPluginのバージョンがサーバと一致していない場合、大きな問題となります。
これらの理由からDataFinderインスタンスへの接続情報をクライアントPCに配布する場合、クライアント構成にデータプラグインを含めるやデータプラグインを自動的に同期などの設定が重要となります。