Options

Same codeunit executed at the same time by 2 users

GonzaloGonzalo Member Posts: 19
Hi there,
Do you know if is it possible to lock a codeunit for user? What I mean it's, if one user is executing a codeunit, I shouldn't allow another user to execute the same codeunit. This codeunit takes a few seconds because gets a xml from an external web service.

Thanks
(My version is nav 2016)

Answers

  • Options
    geordiegeordie Member Posts: 655
    You can use "traffic light" boolean field in a setup table.
    Set it to true at the beginning and back to false at the end; add a control on this field as first instruction of your codeunit.
  • Options
    krikikriki Member, Moderator Posts: 9,090
    Even better:
    Use a any setup table and lock it like this at the beginning of the codeunit:

    Setup.LOCKTABLE;
    Setup.FINDFIRST;

    If the session crashes, the transaction is undone and the record released.
    If you use a traffic light and change it and COMMIT it and your session crashes, the traffic light remains red...
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • Options
    DenSterDenSter Member Posts: 8,304
    You could also consider using the job queue
  • Options
    vaprogvaprog Member Posts: 1,121
    DenSter wrote: »
    You could also consider using the job queue

    Really? Does this not just fire multipe backgrouns sessions which run in parallel?
  • Options
    DenSterDenSter Member Posts: 8,304
    Do you mean a background session for each task? I think the standard job queue starts a single background session for each company and it executes the tasks one after the other for each company. I do think you can set it up in a number of ways though. You can direct a certain type of entry to a certain session, and that session will execute the entries one after the other. It's been a while since I've really looked at it, so it might have a bunch of new capabilities.

    You could also create a custom queue that is based on the job queue and start that in its own NAS Service Tier.
Sign In or Register to comment.