
2025-04-24 :公開
2025-06-09 :「チャンネルの指定方法」と「サンプルコード」追記
Questetra BPM Suite Ver. 17.0 では、オープンチャットに大きな仕様変更が加えられ、コラボチャットへと生まれ変わりました。これにより、スクリプトタスクを用いてチャットにメッセージを投稿する際の挙動も変更されています。また、「アドオン自動工程」もスクリプトによって処理を行っているため、仕様変更の影響を受けます。システム管理者や業務アプリ開発者は注意が必要です。
仕様変更に伴う注意点
投稿チャンネルの明示が必須
Ver. 17.0 では、必ず投稿先のチャンネルを明示的に指定する必要があります。FeedServiceWrapper.FeedMessageWrapper クラスの、以下のいずれかのメソッドでチャンネルを指定します。
- setShareQgroup(QgroupView groupId)
- setChannel(String channelId) new!
チャンネルを指定しなかった場合や、存在しないチャンネルを指定した場合は処理エラーになります。そのため、チャンネルを作成するメソッドが、FeedServiceWrapper クラスに追加されています。
- createPublicChannel(String) new!
参考:R2300: スクリプトタスクで利用できる Java クラス『1-16. チャット機能への投稿を制御するクラス』
1メッセージ = 1チャンネル
1つの投稿メッセージは、1つのチャンネルにしか投稿できません。複数チャンネルに同時投稿したい場合は、同じ内容で複数回投稿する必要があります。
ハッシュタグとメンションの取り扱いが変更
- ハッシュタグ(例:#A社プロジェクト)は単なるチャンネルへのリンクになります。そのチャンネルへ自動的には投稿されません。
- ユーザメンションはチャンネル参加者にのみ通知され、チャンネル外のユーザには無視されます。
- 組織メンションは「組織チャンネル」内でのみ有効であり、かつそのチャンネルの対象組織またはその下位組織に対してのみ通知が届きます。
チャット機能における変更点
チャット機能自体に、以下のような再編成と制約が導入されています:
- 組織・トピックはすべて「チャンネル」に統合
- すべての投稿は単一チャンネルのみへの投稿が可能
- 存在しないチャンネルには投稿できない
- 文中のハッシュタグはリンクとして表示されるだけ
- メンションの有効範囲は、チャンネルの参加メンバ、チャンネル対象組織・その下部組織に限定
チャット機能の変更点についての詳細は、Ver.17.0 オープンチャットが刷新されます(2025年4月) をご覧ください。
Ver. 16.2 との主な違い
| 機能 | Ver. 16.2 | Ver. 17.0 |
|---|---|---|
| プロセスとの紐づけ | ・トピック #p{プロセスID} が自動的に付与される | ・setChannel(“{プロセスID}”) によって明示的に指定する |
| 投稿文中のハッシュタグ | ・ハッシュタグによりトピックが付与される | ・チャンネルへのリンクになる |
| 投稿文中のメンション | ・ユーザ/組織に通知・共有される | ・通知はチャンネル参加者/チャンネル対象組織に限定される |
| setShareQgroup(QgroupView) | ・指定した組織が共有範囲に設定される | ・組織チャンネルを指定する ・setChannel(String) とは両立しない |
| setChannel(String) | ・文中のハッシュタグに関係なく、指定のトピックに関連付ける ・関連付けると、プロセスに関連づいたトピック #p{プロセスID} が自動的には付与されない | ・投稿するチャンネルを指定する ・setShareQgroup(QgroupView) とは両立しない ・setShareQgroup(QgroupView)、setChannel(“g{組織ID}”) のどちらでも組織チャンネルの指定になる |
| createPublicChannel(String) | ・何もしない | ・指定した名称のチャンネルを作成する |
チャンネルの指定方法
各チャンネルの指定方法は下記の通りです。
- 組織チャンネル:組織ID(例:setChannel(“g18”))
- アプリチャンネル:アプリID(例:setChannel(“m2398”))
- プロセスチャンネル:プロセスID(例:setChannel(“p10392”))
- ユーザ作成チャンネル:チャンネル名(例:setChannel(“業務アプリ提案”))
サンプルコード
チャンネルの指定、メッセージ本文のセット、投稿を行うスクリプトについては、下記のサンプルコードをご参照ください。
// データ項目 メッセージ本文(q_msgBody)から値を取得
const msgBody = engine.findDataByVarName("q_msgBody");
// メッセージを作成
let chatMsg1 = feedService.begin();
// メッセージ本文をセット
chatMsg1 = chatMsg1.setMessage(msgBody);
// 組織チャンネルに投稿
chatMsg1 = chatMsg1.setChannel("g18");
chatMsg1.post();
// 複数のチャンネルに投稿するには、それぞれメッセージを作成
let chatMsg2 = feedService.begin();
chatMsg2 = chatMsg2.setMessage(msgBody);
chatMsg2 = chatMsg2.setChannel("業務アプリ提案");
chatMsg2.post();データ項目からのデータ取得については、「R2301: スクリプトタスクでのデータ取得/更新」を、ファイルの添付やリンクの挿入などの方法については、アドオン自動工程「#コラボチャット: 投稿」の Script をご参照ください。
チャンネルベースの投稿、メンション仕様の変更にどう対応する?
新しい仕様に合わせて、チャット通知や共有範囲の見直しが必要です。
パターン別の対処法
- 通知不要な共有のみ⇒必要なチャンネルに同一投稿を繰り返す
- メンションによる通知が必要⇒対象チャンネルを厳密に選定・整理する
- 多くのチャンネルへの通知が必要⇒メール等の別手段での通知併用も検討する
まとめ
バージョン17.0でのチャット機能の刷新により、投稿の制御がより明示的になった一方で、設定ミスによるエラーや通知漏れの可能性もでてきます。
スクリプトタスクでオープンチャットへの投稿していたワークフローアプリでは、今回の変更内容を正しく理解し、投稿方針およびスクリプトの見直しを行うことが重要です。
今後の投稿設計や通知運用をスムーズに行うためにも、紐づけるチャンネルは、組織/プロセス/それ以外のどれか、「誰に」/「どの組織に」に通知したいのかを常に意識して設計してください。
