Szukaj…


Wprowadzenie

Dzięki klasom pochodzącym z CustomizationPlug możesz wykorzystać możliwości Acumatica Customization Platform i wykonać niestandardowy kod po opublikowaniu projektu dostosowywania. W tym temacie dowiesz się, jak wtyczek dostosowywania można używać do wprowadzania zmian w wielu firmach.

Więcej informacji na temat wtyczek dostosowywania znajduje się w Podręczniku dostosowywania Acumatica

Wdrożenie wtyczki dostosowywania w celu aktualizacji wielu firm

Aby utworzyć wtyczkę dostosowywania, wystarczy utworzyć klasę pochodzącą z CustomizationPlug i spakować ją w dostosowywanie. Podczas publikowania projektu dostosowywania system będzie wykonywał metody OnPublished i UpdateDatabase zaimplementowane we wtyczce dostosowywania tylko w bieżącym zakresie firmy .

To powiedziawszy, wtyczka dostosowywania nigdy nie wprowadzi zmian w żadnej innej firmie niż obecna, chyba że użyje PXLoginScope do zalogowania się we wszystkich firmach jedna po drugiej, dostępnych dla bieżącego użytkownika publikującego dostosowanie.

Poniżej znajduje się przykład wtyczki dostosowywania tworzącej rolę użytkownika MyVerticalSolution we wszystkich firmach dostępnych dla bieżącego użytkownika:

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

Aby uzyskać listę firm dostępnych dla bieżącego użytkownika, wystarczy wywołać statyczną PXAccess.GetCompanies() . Następnie PXLoginScope służy do logowania się do każdej z dostępnych firm w celu utworzenia roli użytkownika MyVerticalSolution . Zwróć uwagę, że RoleAccess BLC został ponownie zainicjowany dla każdej firmy - jest to absolutnie obowiązkowy krok do wprowadzania zmian w wielu firmach jednocześnie.

Załóżmy, że w Twojej instancji Acumatica istnieją 2 firmy: CompanyA i CompanyB. Użytkownik administracyjny , którego zamierzasz używać do publikowania dostosowań, ma dostęp zarówno do firm, jak i do roli MyVerticalSolution , utworzonej przez wtyczkę dostosowywania, już istnieje w CompanyA: wprowadź opis zdjęcia tutaj

Po opublikowaniu dostosowywania (po zalogowaniu się do CompanyA lub CompanyB) z wcześniej opracowaną wtyczką dostosowywania w celu utworzenia roli MyVerticalSolution we wszystkich firmach dostępnych dla bieżącego użytkownika, zauważ, że rola MyVerticalSolution została pominięta dla CompanyA i pomyślnie utworzona dla CompanyB.

wprowadź opis zdjęcia tutaj

Następnym razem, gdy opublikujesz to dostosowanie, rola MyVerticalSolution zostanie pominięta dla obu firm w aplikacji Acumatica:

wprowadź opis zdjęcia tutaj



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow