Suche…


Einführung

Mit von CustomizationPlug abgeleiteten Klassen können Sie die Funktionen der Acumatica Customization Platform nutzen und nach Veröffentlichung des Anpassungsprojekts benutzerdefinierten Code ausführen. In diesem Thema erfahren Sie, wie Anpassungs-Plug-Ins für Änderungen in mehreren Unternehmen verwendet werden können.

Weitere Informationen zu Anpassungs-Plug-Ins finden Sie im Acumatica Customization Guide

Implementierung eines Anpassungs-Plug-Ins zum Aktualisieren mehrerer Unternehmen

Um ein Anpassungs-Plug-in zu erstellen, erstellen Sie einfach eine von CustomizationPlug abgeleitete Klasse und packen sie in die Anpassung. Während das System ein Anpassungsprojekt veröffentlicht, führt es die in Ihrem Anpassungs- Plug-In implementierten OnPublished- und UpdateDatabase- Methoden nur im aktuellen Unternehmensbereich aus .

Das heißt, das Anpassungs-Plug-In nimmt niemals Änderungen an einem anderen als dem aktuellen Unternehmen vor, es sei denn, es verwendet PXLoginScope, um sich nacheinander bei allen Unternehmen anzumelden, die der aktuellen Benutzerveröffentlichungsanpassung zur Verfügung stehen.

Im Folgenden finden Sie ein Beispiel für ein Anpassungs-Plugin, das die Benutzerrolle " MyVerticalSolution" in allen Unternehmen erstellt, die dem aktuellen Benutzer zur Verfügung stehen:

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));
            }
        }
    }
}

Um eine Liste der Unternehmen zu erhalten, die dem aktuellen Benutzer zur Verfügung stehen, rufen Sie einfach die statische PXAccess.GetCompanies() Methode auf. Anschließend wird PXLoginScope verwendet, um sich bei jedem der verfügbaren Unternehmen anzumelden , um die Benutzerrolle MyVerticalSolution zu erstellen. Hinweis-Instanz des RoleAccess- BLC für jedes Unternehmen neu initialisiert - dies ist ein zwingender Schritt, um Änderungen an mehreren Unternehmen gleichzeitig vorzunehmen.

Nehmen wir an, es gibt zwei Unternehmen in Ihrer Acumatica-Instanz: CompanyA und CompanyB. Der Administratorbenutzer , den Sie für die Veröffentlichung der Anpassung verwenden werden, hat Zugriff auf beide Unternehmen und die MyVerticalSolution- Rolle, die durch das Anpassungs-Plug-in erstellt wurde, ist bereits in CompanyA vorhanden: Geben Sie hier die Bildbeschreibung ein

Nachdem Sie Anpassungen veröffentlicht haben (während Sie bei CompanyA oder CompanyB angemeldet sind), und zwar mit einem zuvor entwickelten Anpassungs-Plug-in zum Erstellen der MyVerticalSolution- Rolle in allen dem aktuellen Benutzer verfügbaren Unternehmen, beachten Sie , dass die MyVerticalSolution- Rolle für CompanyA übersprungen und erfolgreich für CompanyB erstellt wurde.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie diese Anpassung das nächste Mal veröffentlichen, wird die MyVerticalSolution- Rolle für beide Unternehmen in Ihrer Acumatica-Anwendung übersprungen:

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow