AnyLogic: Some time resource pool moves to destination without having agent - simulation

Problem is explained in the image below
The detail of the agent which I am using:
Detail on the Service in which I am using Resource Pool:
Process Flow:
I used seize-move-release, in order to move the agent with the Resource. showing in figure below
Problem:
Now the only problem is, how 2 Agents will wait in the queue for there turn to go to the Delay section. Explanation is in the image below.

so it seems that most of this flow is wrong if your intent is for the resource to take the agent somewhere.
You are looking at the resource move alone because it's probably going back home
In order to use the resource to move your agent, you need to use seize-move-release, not a service block
I hope this helps

Related

How to get a particular service block process nested agents in Anylogic

I am working on a ticketing model framework, where we receive requests for single or bulk user account creation in an SAP system. The request is an agent which have multiple agents - user(s) inside it.
So, as you can see in the image we have
Source - Request is coming from here.
Delay(createRequestNo) - A request no. is assigned to the Request at this block.
Service(userCreation) - User(s) are created at this block.
Sink - Request (agent) goes out from this block.
resourcePool - A team of 15 who works on creating user accounts. It is linked to service block.
Imagine a bulk request comes in to create 5 users.
How do the resources at the service block process the all 5 user agents which are inside a Request agent here?
You say your Request agent that flows through the process flow has a number of Agents in it, but these don't need to be agents, they can be pure Java classes or requests can also simply carry a number of users to create.
It all depends on the granularity you require
To answer your question you can access the inside of the agents that travels through the process flow and use that to determine the delay or the number of resources to be seized as follow:
Just be sure that the Agent type in the advanced setting is set to the Agent type that you expect in this block. If you set the Source to create a specific agent type it will automatically update all the serially connected blocks for you.
Please note if the user creation process will vary for each user to be created you need a separate delay for each user... and thus it would be better to split into multiple agents for each user creation, and then have them seize, delay and release each resource separately.
With your current logic, they will all be seized and released at the same time.

SEIZE BLOCK and Priority

I have a problem with the SEIZE block. Right now agents are accessing resources by following a priority I set. Is it possible, however, that if more than one agent arrives with the same priority, and asks for the same resources, Anylogic stops not knowing to whom to grant the resources?
If two or more agent with the same priority are asking for the same resource then the first one asking will get it. Here is more information on the topic.

Prevent users from creating new work items in Azure DevOps

I've been looking at organisation and project settings but I can't see a setting that would prevent users from creating work items in an Azure DevOps project.
I have a number of users who refuse to follow the guidelines we set out for our projects so I'd like to inconvenience them and the wider project team so that they find it better to follow the guidelines than not - at the moment we've got one-word user stories and/or tasks with estimates of 60-70 hours which isn't reflective of the way that we should be planning.
I'd still want them to be able to edit the stories or tasks and moving statuses, but that initial creation should be off-limits for them (for a time at least). Is there a way to do this??
The Azure DevOps Aggregator project allows you to write simple scripts that get triggered when a work item is created or updated. It uses a service hook to trigger when such an event occurs and abstracts most of the API specific stuff away, providing you with an instance of the work item to directly interact with.
You can't block the creation or update from, such a policy, Azure DevOps will inform the aggregator too late in the creation process to do so, but you can revert changes, close the work item etc. There are also a few utility functions to send email.
You need to install the aggregator somewhere, it can be hosted in Azure Functions and we provide a docker container you can spin up anywhere you want. Then link it to Azure DevOps using a PAT token with sufficient permissions and write your first policy.
A few sample rules can be found in the aggregator docs.
store.DeleteWorkItem(self);
should put the work item in the Recycle Bin in Azure DevOps. You can create a code snippet around it that checks the creator of the work item (self.CreatedBy.Id) against a list of known bad identities.
Be mindful that when Azure DevOps creates a new work item the Created and Updated event may fire in rapid succession (this is caused by the mechanism that sets the backlog order on work items), so you may need to find a way to detect what metadata tells you a work item should be deleted. I generally check for a low Revision number (like, < 5) and the last few revisions didn't change any field other than Backlog Priority.
I'd still want them to be able to edit the stories or tasks and moving statuses, but that initial creation should be off-limits for them (for a time at least). Is there a way to do this??
I am afraid there is no such out of setting to do this.
That because the current permission settings for the workitem have not yet been subdivided to apply to the current scenario.
There is a setting about this is that:
Project Settings->Team configuration->Area->Security:
Set this value to Deny, it will prevent users from creating new work items. But it also prevent users from modify the workitem.
For your request, you could add your request for this feature on our UserVoice site (https://developercommunity.visualstudio.com/content/idea/post.html?space=21 ), which is our main forum for product suggestions.

Error: root.rackStore.detach: The agent is not in a network

There's a really weird issue happening in a model. I even noticed two unanswered questions about it on Stackoverflow. I tried to simplify the model as much as possible to understand the source of the problem with no luck.
The model is as simple as follows:
Source --> Rack Store --> Sink
Resource Pool assigned to Rack Store
In addition to a pallet rack and a home node for the resource.
The error I get after the agent is picked and stored in the rack is:
root.rackStore.detach: The agent is not in a network
That's how simple the model is:
I appreciate any support. Thank you.
After experimenting, I found the answer. My scenario was a bit more complex than the attached image. It had a combine element before the rack pick and Agent Location (combined) was specified as a node within the network. However, that was not enough apparently for AnyLogic to understand that the combined agent is inside the network, so on exit, I added agent.moveTo(node) which is the same node specified as the agent location and it worked.
The whole rack system in Process modelling Library needs to be properly connected by paths, It can't be in free space. I was also facing a similar issue, connecting everything meticulously by paths is the only thing that worked for me.
Its better to use transporters in such cases.

how to automate bots to monitor for successful queues on orchestrator?

I have a project that I have to do that deals with queues being loaded successfully and unsuccessfully whereby I do manually at the moment that can be tedious and also positive negative meaning the orchestrator can state that new queues have been added but when I access the actual job (process) nothing has been added.
I would like to know, is there a way to monitor queue success and unsuccessful rates on orchestrator instead of the using monitoring it manually?
You can access pretty much any information via the Orchestrator API.
You can find the "Orchestrator HTTP Request" activity, which will allow you to access any relevant endpoint.
Note that the provisioned Robot in Orchestrator needs to have the right access permission, so please have a look at what roles are associated to the Robot user.
The API reference can be found here:
https://docs.uipath.com/orchestrator/reference
You will see it mentions swagger, which in turn will give you all the information you need to access the relevant APIs.