Updated a feature attribute using business logic (an if-then statement)
Currently in my Mobile app the “Inspection Status” gets updated by the user choosing the proper status from a dropdown on the Inspection Form. We then update a attribute on the feature using a “Set Feature Attribute” like this:
=$inspectionForm.state.inspectionStatus.value
What I need to do, is update this INSPECTIONSTATUS attribute dynamically based on what the user has entered onto the form. The code we currently use in our application looks like this. Is it possible to replace the code above with a similar logical statement in the “Set Feature Attribute” object??
if (RAISE = "WR" or LOWER = "WR" or R_LID = "WR" or R_FRAME = "WR" or
R_BRICKS = "WR" or RESET = "WR" or STEPS = "WR" or CHANBENCH = "WR" or
CRACKEDW = "WR" or DETERIOW = "WR" or INFILTRATI = "WR" or
SAFETYGRAT = "WR" or PARGE = "WR" OR CLEANREQ <> "NO") and
(DATEWORK = "") then
INSP_STATUS = "WR"
-
Hey Brian
This would be most easily accomplished with an If activity above your Set Feature Attribute(s).
I have an inspection workflow that I will throw in a bit of logic to match what you are trying to do and share my example in a few minutes here.
0 -
Hey Brian
I threw a rough example together here, based on an existing inspection workflow with some additonal form elements and logic, here: https://apps.vertigisstudio.com/workflow/designer/#workflow=aa03117445dd408ebf7a88428f2498f4 (openable in SaaS VSWF - let me know if you do not have a license)
The main piece I want to highlight is here in the Set Attributes container:I used two if statements in a chain just to illustrate the logic, though if you wanted to you could build a JavaScript if statement to contain the entirety of your logic in one if.
0 -
Thanks Gareth, that is amazing!
No, we don't have the licence, but it prompted me to start a 60 day trial, so once that gets setup I'll log back in and check it out.
I was hoping to just code it manually, but I'll check out what you have and maybe I can just do it using that IF object. I'm pretty much a NOOB to VertiGIS Mobile and used to doing everything from scratch in code format.
Thanks for you help! I'll report back early next week with my progress. :-)
0 -
Hey Brian Bulla
In that case, I've just thrown the export of my workflow as JSON on OneDrive here.
Download that and import it into your on-prem Workflow designer (File > Import) and you can look at my approach.
If you're used to developing from scratch, Workflow should hopefully allow you to move a little more quickly.
I'd also suggest, if you have not seen it already have a look at the VertiGIS Studio Mobile SDK developer documentation as there is a fair bit of context in there that may help support your development efforts.0 -
Thanks Gareth,
I've been able to take what you showed and have got the start of it working….so that is good! Is there a “Code view” option or is everything just done in this “Flowchart” view in Workflow? For something like this where I have to cascade about 10 or so “IF” statements, it would much faster to just type it in code style like I have above.
Thanks for your help!
0 -
OK, so instead of the 10 or 12 IF blocks, I just put them all into 1 as you suggested. That is way easier to code, and to follow when looking at the workflow. I'll delete the other ones now that I don't need them.
Still more testing to do, but I think it's working.
=($inspectionForm.state.raise.value == "WR" || $inspectionForm.state.lower.value == "WR" || $inspectionForm.state.replaceLid.value == "WR" || $inspectionForm.state.replaceFrame.value == "WR" || $inspectionForm.state.replaceBricks.value == "WR" || $inspectionForm.state.resetFrame.value == "WR" || $inspectionForm.state.steps.value == "WR" || $inspectionForm.state.channelOrBenching.value == "WR" || $inspectionForm.state.crackedWalls.value == "WR" || $inspectionForm.state.deterioratedWalls.value == "WR" || $inspectionForm.state.infiltration.value == "WR" || $inspectionForm.state.safetyGrate.value == "WR" || $inspectionForm.state.parging.value == "WR" || $inspectionForm.state.cleaningRequired.value != "NO") && ($inspectionForm.state.txtWorkCompletedDate.value == "")
0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
6 Kommentare