Groovy スクリプトをあるスクリプトから別のスクリプトにインポートする
これは、Groovy スクリプトを別のスクリプトにインポートしてコードを構造化できるようにする方法です。
InsightLogClass.groovy
import com.atlassian.jira.component.ComponentAccessor;
public Object getObject(String key) {
Class objectFacadeClass = ComponentAccessor.getPluginAccessor().getClassLoader().
findClass("com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectFacade");
def objectFacade = ComponentAccessor.getOSGiComponentInstanceOfType(objectFacadeClass);
return objectFacade.loadObjectBean(key);
}
絶対パスの使用
LogObject.groovy
def PATH_TO_SCRIPTS = "/Users/.../groovy/";
File insightLogClassFile = new File(PATH_TO_SCRIPTS, "InsightLogClass.groovy");
Class insightLogClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(insightLogClassFile);
GroovyObject insightLogObject = (GroovyObject) insightLogClass.newInstance();
log.warn(insightLogObject.getObject(object.objectKey));
LogObject.groovy ファイルを自動化ルールで実行すると、影響を受けるオブジェクト (もともとあったもの) をログアウトします。
スクリプトには絶対パスの代わりに次のものを使えます
def PATH_TO_SCRIPTS = new File(getClass().protectionDomain.codeSource.location.path).parent
これにより、Jira で自動化スクリプトが格納されているディレクトリへのパスが提供されます。このディレクトリ内の Groovy クラスがアクセスしやすくなりました。
もう 1 つの利点は、すぐに使えるさまざまな Jira インスタンスで動作することです。たとえば、実稼働インスタンスと QA/テスト/開発インスタンスがある場合、それぞれスクリプトが存在する場所のパスは異なります。パスを動的に見つけるということは、それらのすべてのインスタンスで何の変更もせずにコードが動作することを意味します。
LogObject.groovy
def PATH_TO_SCRIPTS = new File(getClass().protectionDomain.codeSource.location.path).parent
File insightLogClassFile = new File(PATH_TO_SCRIPTS, "InsightLogClass.groovy");
Class insightLogClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(insightLogClassFile);
GroovyObject insightLogObject = (GroovyObject) insightLogClass.newInstance();
log.warn(insightLogObject.getObject(object.objectKey));
LogObject.groovy ファイルを自動化ルールで実行すると、影響を受けるオブジェクト (もともとあったもの) をログアウトします。
Last modified on Mar 25, 2024
Powered by Confluence and Scroll Viewport.