It was my long running mystery, "how and when we use โBypass Security Filterโ in workflow settings, but now the mystery was solved thanks to usual great support from Appsheet teams.
In the setting area, there is statement of ; -
Run this workflow rule as though there are no security filters on the data sources.
Taking into account this explanation, I have been assumed the actions fired by the workflow is ready โignoringโ the security filters applied to the table setting, but it was not. I didnt dig in deeper than that, but recently I had a use case possibly I need to have this on my apps.
Consulted with Appsheet dev teams through the support, and it was possible there was a bit of bug which was fixed now. Probably, the new code will take a bit of time to arrive to your appsheet account, but my test is currently show the desired result and functions.
let me explain.
For instance, we apply filter to the table, just read the rows mathing the value for Email fields where it containts email address of login user. This is quite common use case. Then we apply some sort of โcount(select(Table[ID], true))โ in some fields settings such as app formula or initial value expression. When this expression is applied the count calculation is made on the client side, i.e. to count the number of row in table which โgot throughโ the filter conditions. Assume we have 10 records in app after applying filter, but in reality, we have 100 rows in the original table.
โcount(select(Table[ID], true))โ sort of expression is always calculating the number of records based on โafter filterโ as it is Appsheet โby designโ.
However, let s assume we update the field by workflow/action and push the number of total records count, by setting โBypass Security Filterโ turned ON, it will count the record reading the orinal table โas ifโ there is no security filter applied to the table settings.
Say, I run the action by wrokflow and update target row and fileds with expression of โcount(select(Table[ID], true))โ in the above case on adding new row, then result will be
โBypass Security Filterโ Turned off ; 11
โBypass Security Filterโ Turned on ; 101
In some use case we really need to apply filter to reduce the amount of the records to be sent to the user devices to improve the performance of the app, but at the same time, we wish to run the appsheet expression as if there is no filter being in place.
Now it is easily achievable by setting โBypass Security Filterโ being turned ON!
I placed public sample app so that everyone can play around how it works. The sample app is here.
In this sample app, we read the records from a table using useremail() value mathced email filed (pretty much common use case).
Then compare the inital value with count/select expression result with the action fired by workflow with bypass security filter turned ON.
Have a fun.
I tested further.
Result ; Expression yields correct number to count the number of records.
Obviously the Appsheet is wise enough to read the โmost latestโ whole table upon firing workflow/action regardless of user device specific data. Make sense.
Yes Sir, I use this often!
Well explained @tsuji_koichi. Thank you.
Thank you so much! You just answered my question and solved my problem. You are THE MAN!
I am testing a simple app for adding and reporting via email, with a parent and a children table, both having โfilter all rowsโ , and a workflow bypassing sec filter to sent a report for each new parent row and itโs children.
In email attachement, children are empty.
Any help is much appreciated
Please check a sample โParent Workflowโ from https://www.appsheet.com/portfolio/531778 how itโs built. Itโs a simple timing issue.
I am copying it now to test. In the preview, i saw that โfilter all rowsโ is not checked for parent nor children.
I didnโt see the solution yet.
The reason in your case is probably different than the ByPass option. Take a copy and set both tables with that option. Then you can be sure if the reason is coming from that settings or your appโs settings.
โBypass security filtersโ should apply to children too ?
I took a copy , i checked โfilter all rowsโ for parent and for child table. I added a pdf attachment (auto created one) to the workflow email. i โbypassedโ security filters in workflow. i tested it. Result does not contain recorded children. So the bypass security filter is probably only applied to parent table.
My testing app sends a perfect report if no โfilter all rowsโ is checked.
I just tried to have children with no security filter, and parent with โfilter all rowsโ checked. The workflow sens only the parent row data, and no children data
@Aleksi or others, is there any clarification available regarding the various points raised in the 10/2020 messages here?
Here's what I'm trying to solve:
For what it's worth, my best guess regarding what's going on is:
For the time being, I've added to the beginning of my export action series an action that changes data to allow the child rows to pass the security filter for loading to the user's device. It seems to work ok; I tested once with 12K rows, but I do wonder if I'll at some point encounter the "timing issue". Regardless, it's better for the user if I can avoid downloading 1000s of rows from the server to the device just for the purpose of sending their IDs from the device back to the server.
As always, I appreciate any guidance that anyone can provide.
I encourage you to repost this question to Q&A.
I don't know how it worked for you because it didn't for me or maybe it only work for parents Table because when I am using webhook in child table(ref_rows) to update parents table this Bypass security filtered didn't work in my case. So did you have any solution for that because when I test my webhook it giving me error 404 HTML not found.