acumatica
カスタマイズプラグインを使用して複数の企業で変更を加える
サーチ…
前書き
CustomizationPlugから派生したクラスを使用すると、Acumaticaカスタマイズプラットフォームの機能を利用し、カスタマイズプロジェクトが公開された後にカスタムコードを実行できます。このトピックでは、カスタマイズプラグインを使用して複数の企業で変更を行う方法を学習します。
カスタマイズプラグインの詳細については、「 Acumatica Customization Guide」を参照してください。
複数の企業を更新するためのカスタマイズプラグインの実装
カスタマイズプラグインを作成するには、 CustomizationPlugから派生したクラスを作成し、それをカスタマイズにパッケージ化するだけです。システムがカスタマイズプロジェクトを公開している間、カスタマイズプラグインに実装されているOnPublishedメソッドとUpdateDatabaseメソッドは、現在の会社のスコープ内でのみ実行されます。
つまり、 PXLoginScopeを使用してすべての企業に次々にログインし、現在のユーザーがカスタマイズを公開していない限り、カスタマイズプラグインは現在の会社以外に変更することはありません。
以下は、現在のユーザーが使用できるすべての会社でMyVerticalSolutionユーザーロールを作成するカスタマイズプラグインの例です。
public class MyVerticalSolutionInit : CustomizationPlugin
{
public override void UpdateDatabase()
{
var companies = PXAccess.GetCompanies();
foreach (var company in companies)
{
using (var loginScope = new PXLoginScope(string.Format("{0}@{1}",
PXAccess.GetUserLogin(), company)))
{
string roleName = "MyVerticalSolution";
RoleAccess graph = PXGraph.CreateInstance<RoleAccess>();
Roles existingRole = graph.Roles.Search<Roles.rolename>(roleName);
if (existingRole != null)
{
WriteLog(string.Format("{0} already exists in company '{1}' - skipped", roleName, company));
continue;
}
var wmsRole = new Roles();
wmsRole.Rolename = roleName;
wmsRole.Descr = "User Role for MyVerticalSolution";
graph.Roles.Insert(wmsRole);
graph.Save.Press();
WriteLog(string.Format("{0} was succesfully created in company '{1}'", roleName, company));
}
}
}
}
現在のユーザーが利用できる企業の一覧を取得するには、静的なPXAccess.GetCompanies()
メソッドを呼び出すだけです。次に、 PXLoginScopeを使用して、使用可能な各企業にログインし、 MyVerticalSolutionユーザーロールを作成します。 RoleAccess BLCのインスタンスは、各企業ごとに再初期化されています。これは、一度に複数の企業に変更を加えるための絶対的なステップです。
AcumaticaインスタンスにCompanyAとCompanyBという2つの企業があるとします。カスタマイズを公開するために使用する管理ユーザーは、両方の企業にアクセスでき、カスタマイズプラグインによって作成されたMyVerticalSolutionの役割は、既にCompanyAに存在します。
MyVerticalSolutionのロールを現在のユーザーが使用できるすべての会社で作成するために、以前に開発したカスタマイズプラグインを使用してカスタマイズを公開した後、 MyVerticalSolutionの役割がCompanyAのためにスキップされ、CompanyBのために作成されました。
次回このカスタマイズを公開すると、 MyVerticalSolutionの役割はAcumaticaアプリケーションの両方の企業でスキップされます。