If my sequence contains only read range and after extract as workflow …how can i use that datatable to pass another invoke workflow
@Mukesh_Ahuja
For passing one variable to another workflow you will need to declare it as an argument.
Let’s say for eg: Make an argument named “argOut” and give direction “Out” to it as you will pass this argument to another workflow.
And make another argument “argIn” in another workflow where you need to call the argument “argOut”, and give direction “In” to it as it is the argument where your value will stored.
Hi @Learner
You have to look at get transaction data module. The idea is to load your excel file into a data table called TransactionData. You will then want to assign each row of that table to TransactionItem.
I believe that by default the transactionItem is a queue item, so you have to change that to system.data.datarow
Sure, see below post for reference. Entire test framework is attached at the end.
Let’s consider a framework that will take a list of numbers from the input Excel file and is supposed to multiply them by 2. The input file will be placed within the Framework in the /Input folder:
The information about this file will be placed in the Config file:
Now, let’s adapt the framework to work based on this input data.
It goes like this:
- Change the type of the variable TransactionItem and of all the arguments from QueueItem to System.Data.DataRow. This includes all the workflows it is being passed into.
- Go to the Get Transaction Data workflow and delete the activity: Get Queue Item that is descriptively called “Get Transaction Item”. We will not need it. Instead, we will do simple Transaction Item management with an IF condition:
- if it is a first run, read the Excel file and assign the first transaction item to its first row
(the path to the file is saved in our Config file - if it is a following run, assign the transaction item to its second row
- if no more rows, assign the transaction item to Nothing (thus ending the process)
After that you will have to still go into the SetTransactionStatus xaml file and delete any references to the Queue items, mainly the If block called “If TransactionItem is a QueueItem” for each three outcomes of the transaction (Success, Failed, Business Rule Exception).
See this test Framework for reference:
FrameworkExcelAsInput.zip (974.3 KB)
Hello!
Can you please explain what is the point to using excel as an input in the ReFramework? I mean, I thought the reason to use ReFramework is to use Queue and transaction and so we can rerun the individual transactions in case of an system/business rule errors. In the Queue, we can see exactly which transaction has failed and retry those through the Orchestrator, but what are the options to do it in the excel input file?
I mean, we can output the failed transactions and put all these failed transactions in the excel input file. Then re-run the process… Is that how you would do it if we have to use Excel input file?
Thanks!
hi @loginerror
what the query retry flow decision you are using queryretry variable but there is no use of query retry variable in the given workflow as the above condition (e.g. If TransactionItem is a QueueItem) is commented
Hi @lavint
The framework is able to retry transactions on its own. Basically, there are two retry mechanisms: one ‘local’ one within the framework and one based on Orchestrator queue retry values.
Running the framework with an Excel is simply emulating the functionality of Orchestrator a bit.
As far as remember (and it’s been a while :D), I made a minimum working example. Some additional clean-up is appreciated whenever needed.
The retry mechanism is already part of the Reframework. When you add a positive number to the config file for retry the process is retries automatically for that transaction till the number of times you have defined.
Hi @loginerror and @nadim.warsi,
Let’s say I use ReFramework with excel as the input and no Orchestrator is involved. There are 500 transactions. I set to retry each transaction 3 times in the framework but 100 transactions still fail because those transactions rely on information that will come after 10 days. So at this point, what’s your suggestion on structuring the process so after 10 days I can rerun only those 100 transactions with the same UiPath process?
Well i have developed a similar process.
But in my case i kept a Status column. I has 3 status one Success, Retry(if any run-time bot issue) and Failed(if some business error)
Creating process with a filter on reading the data from the file for Status column as blank or retry will be enough.
Let me know what you think.
That makes sense! Thank you!
Can you please show that assign out_transaction item
Is that io_TransactionData.Ros(in_transaction_Number).item(0)----> this is showing an error to me
Sure:
Main.xaml (49.0 KB)
Process.xaml (6.6 KB)
CloseAllApplications.xaml (4.7 KB) GetAppCredentials.xaml (13.3 KB) GetTransactionData.xaml (11.9 KB) InitAllApplications.xaml (5.1 KB) InitAllSettings.xaml (17.6 KB) KillAllProcesses.xaml (4.7 KB) SetTransactionStatus.xaml (56.3 KB) TakeScreenshot.xaml (8.6 KB) project.json (311 Bytes)
It worked. I adapted your example on one of my projects and it helped a lot!
Hi @loginerror ,
I am trying the create the Framework using xaml’s you have attached,and I am facing issue in process.xaml as below:
Appreciate your help!