JunshuO
ServiceNow Employee

ServiceNow を利用していると、開発者はプラットフォームの動作をカスタマイズする必要がある一方で、アップグレードのリスクから標準の (OOB) スクリプトインクルードを直接変更することに制約を受ける場面によく遭遇します。この課題に対する優れた解決策の1つは、 ラッパークラス を利用することです。

 

-> ラッパークラスとは何ですか?

ServiceNowにおける ラッパークラス とは、既存の標準 (OOB) スクリプトインクルードを拡張するカスタムスクリプトインクルードのことです。これにより、元のファイルを変更することなく、特定のメソッドを上書きまたは拡張できます。このアプローチにより、変更が アップグレードセーフ であることが保証されます。つまり、ServiceNow がプラットフォームを更新しても、変更が失われたり競合したりすることはありません。

ラッパークラスは次のパターンに従います。

var CustomWrapper = Class.create();
CustomWrapper.prototype = Object.extendsObject(OOBScriptInclude, {
    // Override or extend methods here
});


-> なぜOOBスクリプトインクルードを直接変更してはいけないのですか?

多くの OOB スクリプトインクルードには、次のような警告があります。
「警告: このファイルは中程度の危険性があり、今後のリリースで再度更新される可能性があります。必要な場合を除き、このファイルを変更しないでください。」

Ratnakar7_3-1766769257409.png

これらのファイルを直接変更すると、次の問題が発生する可能性があります。

  • アップグレード後に機能が損なわれる

  • マージ競合を引き起こす

  • サポート契約を無効にする

代わりに、ラッパークラスを使用してロジックを安全にオーバーライドします。


->例:従業員センターウィジェット

従業員センターの 「自分のアクティブなアイテム」 ウィジェットでは、ユーザーは要求やタスクなどの項目で 「9+」 のようなアイテム数を目にすることがよくあります。しかし、一部の顧客は、上限が設定された「9+」の代わりに 実際のカウント (例:12、25、88)を表示したいと考えています。

Ratnakar7_1-1766768484126.png

 

 

このロジックは、標準 (OOB) スクリプトインクルードである ActivityConfigurationUtilSNC に、特にメソッド getActivityData() 内に存在します。このファイルは変更すると危険であるとフラグ付けされているため、ラッパークラスを使用してこのメソッドを安全にオーバーライドします。

->ソリューション:ラッパークラスの実装

ソリューションを実装した方法は次のとおりです。

var ActivityConfigurationUtil = Class.create();
ActivityConfigurationUtil.prototype = Object.extendsObject(ActivityConfigurationUtilSNC, {
    getActivityData: function(recordLimit) {
        // Original logic copied from ActivityConfigurationUtilSNC
        ...
        itemData.totalItemCount = itemData.itemCount;

        // Commenting out the logic that caps the count at '9+'
        /*if (itemData.itemCount > 9) {
            itemData.itemCount = '9+';
        }*/
       itemData.itemCount = itemData.totalItemCount;
        ...
    },
    type: 'ActivityConfigurationUtil'
});

 

このラッパークラスは、 getActivityData メソッドをオーバーライドし、実際のカウントを「9+」に置き換える条件を削除します。これによりウィジェットは 実際のアイテム数 を表示し、元のスクリプトインクルードに手を加えることなく、顧客の要件を満たしています。

ServiceNow を 将来にわたって安全な 方法でカスタマイズするには、ラッパークラスの使用がベストプラクティスです。ロジックの微調整、機能の強化、あるいは制限の回避など、ラッパーはアップグレードの安全性を損なうことなく革新できる柔軟性をもたらします。

ご自身の実装でラッパークラスを使用されたことはありますか?ご経験やご質問をぜひ以下で共有してください!

 

どうぞよろしくお願いいたします。
ラトナカール

 


この記事は機械翻訳されております。最新は元となる記事をご覧ください: https://www.servicenow.com/community/developer-advocate-blog/upgrade-safe-modification-with-wrapper-...。

免責事項: 一部の日本語は、翻訳ソフトウェアを使用してお客様の便宜のために翻訳されています。正確な翻訳をご提供できるよう相当な努力を払っておりますが、いかなる自動翻訳も人間の翻訳者に代わすることはなく、そのようなことは意図されておりません。翻訳は「現状のまま」提供されています。他言語への翻訳の的確性、信頼性または正確性については、明示または黙示を問わず、いかなる保証も行われません。翻訳ソフトには限界があるため、一部のコンテンツが正確に翻訳されていない場合があります。これらの資料の公用言語は英語です。翻訳の際に生じる相違または不一致は、コンプライアンスまたは履行の目的に関しては拘束力を有さず、法的効力はないものとします。

This article was machine translated and replicated from the original source: https://www.servicenow.com/community/developer-advocate-blog/upgrade-safe-modification-with-wrapper-...。