X++-runtimefuncties sessie

In dit artikel worden de sessieruntimefuncties beschreven.

curExt

Haalt de extensie op die het huidige bedrijf gebruikt.

str curExt()

Return value

De uitbreiding voor het huidige bedrijf.

Example

static void curExtExample(Args _arg)
{
    str s;
    // Sets s to the extension of the current company.
    s = curExt();
    print "Current extension is " + s;
}

curUserId

Haalt de niet-numerieke id op die de huidige gebruiker vertegenwoordigt.

str curUserId()

Return value

De niet-numerieke id die de huidige gebruiker vertegenwoordigt.

Example

static void curUserIdExample(Args _arg)
{
    str s;
    s = curUserId();
    print "Current user ID is " + s;
}

funcName

Hiermee wordt een tekenreeks opgehaald die de huidige functiecontext bevat.

str funcName()

Return value

De naam van de methode die deze methode uitvoert.

Remarks

Als de uitvoering zich momenteel binnen het lid van een tabel of klasse bevindt, wordt de naam van de methode voorafgegaan door de naam van die tabel of klasse.

Example

static void funcNameExample(Args _arg)
{
    print "Current function context is " + funcName();
}

getCurrentPartition

Haalt de korte naam van de huidige partitie op.

str getCurrentPartition()

Return value

De korte naam van de huidige partitie.

Remarks

De maximale lengte van de gegevenspartitienaam die wordt geretourneerd, is acht tekens.

Example

In het volgende codevoorbeeld ziet u aanroepen naar en uitvoer van de functie getCurrentPartition van de X++-taal en gerelateerde functies of methoden.

static public void Main(Args _args)  // X++ method.
{
    int64 iPartition;
    str sPartition;
    SelectableDataArea oSelectableDataArea;  // System ExDT.
    iPartition = getCurrentPartitionRecId();
    sPartition = getcurrentpartition();
    oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
    Global::info( strFmt(
            "getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
            iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/

getCurrentPartitionRecId

Haalt het veld RecId van de huidige partitie op.

int64 getCurrentPartitionRecId()

Return value

Het veld RecId van de huidige gegevenspartitie.

Remarks

Als u een codevoorbeeld wilt zien dat afhankelijk is van de functie getCurrentPartitionRecId , raadpleegt u How to: Include a Filter for Partition in Direct Transact-SQL.

Example

In het volgende codevoorbeeld ziet u aanroepen naar en uitvoer van de functie getCurrentPartitionRecId van de X++-taal en gerelateerde functies of methoden.

static public void Main(Args _args)  // X++ method.
{
    int64 iPartition;
    str sPartition;
    SelectableDataArea oSelectableDataArea;  // System ExDT.
    iPartition = getCurrentPartitionRecId();
    sPartition = getcurrentpartition();
    oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
    Global::info( strFmt(
            "getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
            iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/

getPrefix

Haalt het huidige uitvoeringsvoorvoegsel op na opeenvolgende aanroepen naar de functie setPrefix .

str getPrefix()

Return value

Het huidige uitvoeringsvoorvoegsel.

Remarks

Met het voorvoegselmechanisme kunt u eenvoudiger nauwkeurige foutberichten schrijven over de transacties die een toepassing uitvoert. Omdat er een hiërarchische weergave wordt gemaakt in het infologboek, kan het eenvoudiger zijn om te bepalen waar elke fout vandaan komt.

Example

static void getPrefixExample(Args _arg)
{
    setPrefix("Prefix");
    setPrefix("Another prefix");
    print getPrefix();
}

sessionId

Hiermee wordt het sessienummer van de huidige sessie opgehaald.

int sessionId()

Return value

De numerieke id van de huidige sessie.

Remarks

Wijs een sessienummer toe wanneer u de client start en verbinding maakt met Application Object Server (AOS). Elke aanroep van deze functie gedurende de levensduur van de client retourneert dezelfde gehele waarde. De geretourneerde waarde is compatibel met het uitgebreide gegevenstype SessionID . De bevat methoden die informatie retourneren over afzonderlijke gebruikerssessies.

Example

static void sessionIdExample(Args _arg)
{
    int session;
    session = sessionId();
    print "This session ID is number " + int2Str(session);
}

prmIsDefault

Bepaalt of de opgegeven parameter voor de huidige methode de standaardwaarde heeft.

int prmIsDefault(anytype argument)

Parameters

Parameter Description
Argument De parameter die moet worden getest.

Return value

1 als de standaardwaarde voor de parameter is gebruikt; anders , 0 (nul).

Example

static void prmIsDefaultExample(Args _arg)
{
    void fn(boolean b = true, int j = 42)
    {
        if (prmIsDefault(b) == 1)
        {
            print "First parameter is using the default value.";
        }
        else
        {
            print "First parameter is not using the default value.";
        }
    }
    fn();
    fn(false);
}

runAs

Hiermee kan de aanroeper een X++-methode uitvoeren in de beveiligingscontext van een andere gebruiker. Deze functie wordt meestal gebruikt met batchverwerking.

container runAs(
    str userId,
    int classId,
    str staticMethodName
    [,
    container params,
    str company,
    str language,
    str partition
    ])

Parameters

Parameter Description
userId De gebruiker die zich voordoet.
classId De klasse die moet worden aangeroepen in de geïmiteerde sessie.
staticMethodName De klassemethode die moet worden aangeroepen in de nieuwe gebruikerscontext.
params De parameters die moeten worden doorgegeven aan de methode; facultatief.
company Het bedrijf dat is geselecteerd voor de geïmiteerde sessie; facultatief.
language De taal die is geselecteerd voor de geïmiteerde sessie; facultatief.
partition De partitiesleutel van het type dat wordt geretourneerd door de functie getCurrentPartition ; facultatief.

Return value

Een container met de retourwaarde of waarden van de methode die door de runAs-functie wordt aangeroepen, als er waarden worden geretourneerd.

Remarks

Met deze functie kunt u code uitvoeren als een andere gebruiker. Deze mogelijkheid vormt een beveiligingsrisico. Daarom wordt deze functie uitgevoerd onder Code Access Security. Aanroepen naar deze functie op de server vereisen toestemming van de klasse RunAsPermission . Elk gebruik van deze API (Application Programming Interface) moet worden gemodelleerd. Als er een beveiligingsprobleem wordt gedetecteerd, valideert u de invoer voor deze API. Het foutopsporingsprogramma negeert mogelijk onderbrekingspunten die zich in een methode bevinden die door de runAs-functie wordt aangeroepen. X++-code die door de runAs-functie wordt uitgevoerd, moet worden uitgevoerd als Microsoft .NET Framework Common Intermediate Language (CIL). Als CIL niet wordt gegenereerd voor de statische doelmethode, geeft een foutbericht aan dat de methode niet wordt gevonden. Het systeemtype PartitionKey is het exacte type van de partitieparameter . PartitionKey is een tekenreeks met een maximale lengte van acht tekens.

Example

In het volgende voorbeeld wordt de methode runDueDateEventsForUser aangeroepen in de klasse EventJobDueDate . De code wordt uitgevoerd in de beveiligingscontext van een gebruiker. Voer deze code uit door deze toe te passen op een methode in een nieuwe klasse.

server static public void Main(Args _args)
{
    RunAsPermission perm;
    UserId runAsUser;
    SysUserInfo userInfo;
    userInfo = SysUserInfo::find();
    runAsUser = userInfo.Id;
    perm = new RunAsPermission(runAsUser);
    perm.assert();
    runAs(runAsUser, classnum(EventJobDueDate), "runDueDateEventsForUser");
    CodeAccessPermission::revertAssert();
}

setPrefix

Hiermee stelt u het voorvoegsel voor het huidige uitvoeringsbereik in.

int setPrefix(str _prefix)

Parameters

Parameter Description
_prefix Het voorvoegsel voor het huidige uitvoeringsbereik.

Return value

0 als het voorvoegsel is ingesteld.

Remarks

Gebruik de functie getPrefix om het volledige voorvoegsel voor de uitvoering op te halen. Wanneer het bereik afloopt, wordt het voorvoegsel automatisch opnieuw ingesteld op het vorige niveau. Met het voorvoegselmechanisme kunt u eenvoudiger nauwkeurige foutberichten schrijven over de transacties die een toepassing uitvoert. De AA-methode roept bijvoorbeeld de BB-methode aan en elke methode roept de functie setPrefix aan. Berichten die door de BB-methode naar het Infolog worden geschreven, worden genest weergegeven in een hiërarchie. Wanneer de BB-methode eindigt en het besturingselement terugkeert naar de AA-methode , wordt het voorvoegsel dat de BB-methodeset niet is gekoppeld aan volgende berichten.

Example

static void setPrefixExample(Args _arg)
{
    int i;
    i = setPrefix("Prefix");
    print i;
}