Cover Image

HCL RTist V10.3 サポート終了のお知らせ

2022/5月/2 - 読み終える時間: ~1 分

HCL RTist announces End of Support for V10.3 の翻訳版です。

HCL RTist V10.3 サポート終了のお知らせ

2023年4月30日以降、HCL RTist V10.3 RTist (PID=HCL18OP1179) はサポート終了となります。

HCL RTist 10.3をお使いのお客様は、V11.0、11.1、またはそれ以降の新しいバージョンにアップグレードすることをお勧めします。アップグレードは簡単で、古いモデルも10.3と同じように動作するはずです。移行の観点からは、サポートされるコンパイラが主な違いです。

HCL RTistの異なるバージョンにおけるアップグレードのより包括的なリストについては、このリンクを参照してください。

HCL ソフトウェアは、製品の絶え間ない革新により、究極の顧客満足を提供することに専念しています。いつものように、HCLの営業担当者、または、rtist@hcl.com まで、お気軽にお問い合わせください。


Cover Image

HCL RTist 11.1 2021.46 の新機能

2021/12/2 - 読み終える時間: 2 分

What's new in HCL RTist 11.1 2021.46 の翻訳版です。


HCL RTist 11.1 2021.46 の新機能

本日、HCL RTist の別のリリースを出荷しました。11.1 2021.46. いつものように、いくつかの新機能といくつかのバグフィックスがあります。その中からいくつかをご紹介します。


イベントデータの移動

画像の説明

2つのカプセル間で頻繁にデータを送信する場合や、データが大きい場合は、イベントデータを移動するという新しい機能を利用できます。上の図は、2つのカプセル間で頻繁に送信される文字列をコピーではなく移動するテストアプリケーションで、アプリケーションのパフォーマンスが約35%向上したことを示しています。

型の型記述子には、新しい移動関数が含まれています。定義されていれば、オブジェクトへのrvalue参照がsend-statementで提供されている場合、データ・オブジェクトが移動されます。例えば、std::moveを使ってrvalueの参照を得ることができます。

pb.e1(mc).send(); // コピーによる送信
pb.e1(std::move(mc)).send(); // 移動による送信

受信したイベントのデータをトランジション関数内で移動させることもできます。これを可能にするには、rtdataパラメータを非constとして宣言する必要があります。これを実現するには、新しいトランジションプロパティ Const rtdata parameter のマークを外します。

画像の説明

そして、イベントデータを、例えばカプセル属性に移動させることができます。

m = std::move(*rtdata);


トランジションのコピー/ペースト

あるステートマシンのトランジションをコピーして、別の(または同じ)ステートマシンのステートにペーストできるようになりました。これにより、既存のステートマシンに基づいて新しいステートマシンを作成するプロセスを大幅にスピードアップすることができます。コピーしたトランジションをステートにペーストすると、最初はそのステートの自己トランジションになります。他の状態をターゲットにしたい場合は、後からステートチャート図の中でトランジションを再ルーティングすることができます。


フラグメント・ファイルの自動作成

画像の説明

新しい環境設定「モデリング」-「フラグメント・ファイルの自動作成」 は、新しく作成されたモデル要素をそれぞれのフラ グメント・ファイルに配置したい場合に設定できます。これは、完全に断片化されたモデルの作成を好むユーザーにとって便利です。なお、フラグメントファイルに格納されたモデル要素の名前を変更しても、フラグメントファイルの名前は自動的に変更されません。プロジェクト・エクスプローラーのコンテキスト・メニューには、フラグメント・ファイルの名前を変更するための別のコマンド Refactor - Rename file が用意されています。


コード・コンプライアンス

環境設定 「RealTime Development」-「Build/Transformations」-「C++」-「Code compliance」-「Clang-Tidy」 では、コード内に抑制コメントを生成することで、特定の sizeof 式に対する警告も処理するようになりました。生成されたコードから警告を受けないことで、Clang-Tidyを使って手書きのコードスニペットの問題点を見つけることがより現実的になります。

このリリースの新機能については、Sprint Demo YouTube Playlist のビデオをご覧ください。


HCL RTistによる汎用型記述子の記述

2021/11/10 - 読み終える時間: 3 分

Writing a generic type descriptor with HCL RTist の翻訳版です。


HCL RTistによる汎用型記述子の記述

2021年11月9日

著者: Mattias Mohlin / Senior Solutions Architect for HCL Software

画像の説明

型記述子は、クラス、typedef、型の別名など、モデル内のユーザー定義の型に関するメタデータを提供します。TargetRTSは、型記述子の情報を使って、その型のオブジェクトをどのように初期化、コピー、エンコードするかなどを知ります。多くの場合、モデルコンパイラは型に対して自動的に型記述子を生成しますが、場合によっては手動で型記述子を書く必要があります。型記述子に慣れていない方は、この記事を読んでから先に進むことをお勧めします。

ここでは、型がジェネリックである場合、つまり、1つまたは複数のテンプレートパラメータを持つ場合について見てみましょう。以前は,テンプレート型の具体的なインスタンスごとにtypedefやtype aliasを作成し,そのテンプレートのインスタンスに合わせて型記述子を記述する必要がありました.これは明らかに面倒で、しばしばコードの重複を招きました。RTist 11.1 2021.24からは、型と同じテンプレートパラメータを使用するジェネリックな型記述子を書くことができるようになりました。これにより、多くの時間を節約し、コードの重複を避けることができます。

例として,異なる種類の要素を持つベクトルを2つのカプセル間で送信する場合を考えてみましょう.まず最初に,std::vectorの型のエイリアスを定義し,vector型の型テンプレートパラメータを追加します.この場合、テンプレートパラメータを持つ型が必要なので、typedefは使えません。

画像の説明

次に、tを書きます。 target = new (target) std::vector<T>();

Copy 関数 target = new(target) std::vector<T>(*source);

Destroy 関数 target->~StdVector<T>();

今回の例では、これら3つの型記述子関数があれば十分ですが、汎用的なエンコードの実装方法を示すために、Encode関数も実装してみましょう。

const RTObject_class *elementTypeDescriptor = RTObject_class::fromType<T>();
if (!elementTypeDescriptor)
return 0; // Element type descriptor not available
int sum = 0;
bool first = true;
sum += coding->write_string(type->name());
sum += coding->write_string("{");
for (auto i = source->begin(); i != source->end(); i++) {
if (!first)
sum += coding->write_string(",");
first = false;
sum += elementTypeDescriptor->encode(&*i, coding);
}
sum += coding->write_string("}");
return sum;

この実装では、TargetRTSの新しいテンプレート関数であるRTObject_class::fromType()を使用して、ベクター要素の型の型記述子を取得します。その型記述子は、各ベクトル要素のエンコードに使用されます。

TargetRTSでは、すべての組み込みC++型に対してRTObject_class::fromType()のテンプレート特殊化を提供していますが、StdVectorを他の型でも使用したい場合には、同様の特殊化を記述する必要があります。例については、TargetRTS ファイルの RTObject_class.h を参照してください。

Decode関数は、解析を必要とするため、通常、型記述子関数の中で最も実装が難しい関数です。この関数を実装することは、このニュースレターの範囲外です。しかし、モデルコンパイラが型記述子を生成しないため、完全に空けることはできません。

デコード関数

// NOT IMPLEMENTED

return 1;

最後に、StdVector用のコードスニペットを2つ用意しておきます。

Header Preface #include <vector>

これにより、StdVector型を使用する際に、基礎となるstd::vector型が利用できるようになります。

Header Ending

template <> const char* RTName_StdVector<int>::name = "StdVector<int>";
template <> const char* RTName_StdVector<char>::name = "StdVector<char>";

これらのテンプレートの特殊化は厳密には必要ではありませんが、デバッグの際に役立ちます。デフォルトでは、型記述子の名前はモデル型の名前(この例ではStdVector)に設定され、その名前は型記述子のすべてのインスタンスで同じになります。使用するテンプレートのインスタンスに対して特殊化を行うことで,より具体的な名前を得ることができます.

なお,すべてのコンパイラが,このような特殊化をヘッダファイルに記述できるわけではありません。

それでは、StdVector型記述子をテストしてみましょう。2つのカプセルを持つサンプルモデルを作成し、1つ目のカプセルから2つ目のカプセルにintのベクターを送信し、2つ目のカプセルから1つ目のカプセルにcharsのベクターを送信します。自分でモデルを作りたくない場合は、添付のモデルを使うことができます。そのモデルを構築して実行すると、このような出力が出力されます。

Reached Cap2 State 1
Reached Cap1 State1 and sending Integer
Success: Received sendInteger event with data at Cap2.
Received: StdVector<int>{1,2,3}
Reached Cap2 State2 and sending Chars
Success: Received sendChar event with data at Cap1.
Received: StdVector<char>{'a','b','c'}
Reached Cap1 State2 and received Chars

HCL RTist: CDATAを使ったモデルファイルへのコードの格納

2021/4/5 - 読み終える時間: 2 分

Storing Code in Model Files Using CDATA の翻訳版です。

HCL RTist: CDATAを使ったモデルファイルへのコードの格納

ng Code in Model Files Using CDATA profile image Mattias Mohlin Senior Solutions Architect for HCL Software

画像の説明

RTistのモデルは、XMLファイル(.emx、.efx)に格納されています。このようなファイルをテキストエディタで開いたことがある方は、モデルに格納されているコードスニペットが、XMLで義務付けられている特定の文字のエンコーディングのために、非常に読みづらいことに気づかれたことでしょう。以下にその例を示します。

画像の説明

一部のコードスニペットはXMLの属性として格納されており、改行もコードスニペット全体が1行で表示されるようにエンコードされているため、見た目がさらに悪くなります。

画像の説明

RTist 11.0 2020.33からは、コードスニペットがXMLファイルのCDATAセクションに保存されるように設定することができます。これにより、コードをエスケープする必要がなくなり、読みやすさが大幅に向上します。この環境設定は「モデルファイルの保存時にCDATAを使用」というもので、「モデリング」環境設定ページにあります。この設定は、コード・スニペットだけでなく、ドキュメント・テキストの保存方法にも影響します。

画像の説明

この環境設定を設定すると、上記の例のコード・スニペットは次のようになります。

画像の説明

画像の説明

なお、RTistの古いバージョンでも、CDATAを使ったモデルファイルを読むことができます。その意味で、この機能は後方互換性があります。ただし、そのような古いバージョンのツールでモデルを編集して保存すると、コードスニペットは再びCDATAを使用せずに保存されることに注意してください。 モデルファイルにCDATAを使用することにした場合、ワークスペース内のすべてのファイルを新しいフォーマットで使用するために手動で保存し直すのは少々面倒です。簡略化するために、モデルフィクスアップを実行すると、すべてのモデルファイルが自動的にCDATAを使用するように変換されます。

画像の説明

詳細はこちらのビデオをご覧ください。


このブログについて

HCL Japan の Software 部門の複数担当者で HCL Software 全般について記しています。

Tags

Accelerate Ambassador AoC AppDev Pack AppScan ASoC beta BigFix BigFix 9.5 BigFix_Wiki branding CAA Client Applicatin Access cloud Cloud Apps Cloud Native Commerce community companion Compass compliance Connections Connections 6.5 ConnectionsDocs Connnections CVE-2021-44228 developerWorks DevOps DevOps.Launch.AppScan Digital Experience document Doino Volt Domino Domino AppDev Pacl Domino Volt DQL dW dx Enterprise Integrator event fix fix_list fixlist forum General guide HCAA HCL Ambassador HCL OneTest Embedded HCL Z and I Emulator HCL Z and I Emulator for Transformation hints_and_tips history HTMO IBM_i ID_Vault iNotes ios ios13 ipad iPhone Launch Launch.DevOps LEAP Link logo MarvelClient mobile mui nds2019 ndv12beta News Nomad Nomad Mobile Nomad Web Notes Notes/Domino Notes/Domino 10 Notes/Domino 11 notes-domino-9-10-limited-supportability-as-of-202204 Notes/Domino V12 Notes/Domion Notes/Domno notescons Now on_premises OneDB OneTest osaka press_release relay RTist SafeLinx Sametime Sametime 11 SoFy support survey system_requirement techtek Traveler Traveler 10 Traveler for Microsoft Outlook traveler.zip Unica Unica Discover Unica Interact UrbanCode Deploy UrbanCode Velocity v11 V12 Verse Verse Mobile Verse On-Premises VersionVault Volt Volt MX Webinar win7 youtube Z Z ABEND Investigator Z and I Emulator Z and I Emulator for Transformation Z and I Emulator for Web Z and I Emulator for Web Client Z Asset Optimizer ZAO ZIE ZIE for Web ZIE for Windows ZIETrans ZIEWeb うるう年 イベント ウェビナー ガイド クラウド クラウド終了 サイジング サポート サポート技術情報 サポート期間 サポート終了 セキュリティー セキュリティー脆弱性 セミナー ダイバーシティー ダウンロード テクてく テクてく Lotus 技術者夜会 ニュース ノーツコンソーシアム バージョンアップ パフォーマンス パートナー ベータ ポートフォリオ ライセンス 互換性 出荷日 各種ご案内資料 研修