Zoeken…


Invoering

Met klassen die zijn afgeleid van CustomizationPlug kunt u de mogelijkheden van het Acumatica Customization Platform gebruiken en aangepaste code uitvoeren nadat het aanpassingsproject is gepubliceerd. In dit onderwerp leert u hoe u plug-ins voor aanpassing kunt gebruiken om wijzigingen aan te brengen in meerdere bedrijven.

Meer informatie over maatwerk plug-ins is beschikbaar in Acumatica Maatwerkhandleiding

Implementatie van een plug-in voor aanpassing van meerdere bedrijven

Om een aanpassingsplug-in te maken, maakt u eenvoudig een klasse afgeleid van CustomizationPlug en verpakt u deze in aanpassing. Terwijl het systeem het aanpassingsproject publiceert, voert het alleen de OnPublic- en UpdateDatabase- methoden uit die zijn geïmplementeerd in uw aanpassingsplugin binnen het huidige bedrijfsbereik .

Dat gezegd hebbende, de plug-in voor aanpassing zal nooit wijzigingen aanbrengen aan iemand anders dan het huidige bedrijf, tenzij het PXLoginScope gebruikt om in te loggen bij alle bedrijven, de een na de ander, beschikbaar voor de huidige aanpassing van de gebruikerspublicatie.

Hieronder ziet u een voorbeeld van een aanpassingsplug-in die de gebruikersrol MyVerticalSolution creëert in alle bedrijven die beschikbaar zijn voor de huidige gebruiker:

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

Om een lijst met beschikbare bedrijven voor de huidige gebruiker te verkrijgen, roept u eenvoudig de statische methode PXAccess.GetCompanies() . Vervolgens wordt PXLoginScope gebruikt om in te loggen bij elk van de beschikbare bedrijven om de gebruikersrol MyVerticalSolution te creëren. Let op het geval van de RoleAccess BLC die voor elk bedrijf opnieuw is geïnitialiseerd - dit is een absoluut verplichte stap om wijzigingen in meerdere bedrijven tegelijk aan te brengen.

Laten we aannemen dat er twee bedrijven in uw Acumatica-instantie zijn: CompanyA en CompanyB. De admin- gebruiker, die u gaat gebruiken om aanpassingen aan te brengen, heeft toegang tot beide bedrijven en de MyVerticalSolution- rol, gecreëerd door de plug-in voor aanpassing, bestaat al in CompanyA: voer hier de afbeeldingsbeschrijving in

Nadat u aanpassing hebt gepubliceerd (terwijl u bent aangemeld bij CompanyA of CompanyB) met eerder ontwikkelde aanpassingsplug-in om de MyVerticalSolution- rol te maken in alle bedrijven die beschikbaar zijn voor de huidige gebruiker, ziet u dat de MyVerticalSolution- rol is overgeslagen voor CompanyA en met succes is gemaakt voor CompanyB.

voer hier de afbeeldingsbeschrijving in

De volgende keer dat u deze aanpassing publiceert, wordt de MyVerticalSolution- rol voor beide bedrijven in uw Acumatica-toepassing overgeslagen:

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow