Reframework help

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.

3 Likes

What if its output is datatable …
@Mukesh_Ahuja

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 :slight_smile:

3 Likes

@loginerror
Can you show me this with workflow…??

@Learner

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:
image
image

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:

  1. 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.
  2. 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 :slight_smile:
  • 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)

image
image

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)

28 Likes

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.

1 Like

Hi @Himanshu.joshi

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?

1 Like

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.

3 Likes

That makes sense! Thank you! :slight_smile:

1 Like

@loginerror

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

Hi @RachelN

The project is attached at the bottom of that post :slight_smile: Feel free to explore it! :smiley:

I cant download zip. If possible can u post the xaml file @loginerror

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)

3 Likes

It worked. I adapted your example on one of my projects and it helped a lot!

2 Likes

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!