Provide specification for how naming and versioning business logic conventions should be used. #478
-
@MattReimer, it has come up several times now where we have a need to keep an existing or old version of business logic, but a new version of a tool or model emerges and we need something better than old and new or final suffixes or prefixes. We have punted on this previously in some false sense of delusion that it would not be that common. We have good guidelines for versioning of tools. Can you please give us some simple guidelines for how you would like this done? Also, where does the documentation belong for this? We originally had some stuff (targeted at developers and curators) here: https://tools.riverscapes.xyz/gnat/ Later, @philipbaileynar made up some new and updated (and of course conflicting stuff) here: https://rave.riverscapes.xyz/Technical_Reference/business-logic.html This is motivated by #476 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
I was trying to remind myself how RAVE looks for business logic. My memory was failing. I think that for the current live warehouse @MattReimer is already "registering" if you will one VBET Business Logic to be the default display for each version of them model based on the old "Program" (e.g. https://github.com/Riverscapes/RiverscapesXML/blob/master/Programs/Anabranch/Program.xml)? So , is the current plumbing for business logic looking at the Program
If I understand correctly @MattReimer "Programs" are going away with release of v 3.0 of warehouse? If so, it seems like an opportune time to specify this in a slightly more future proof way. I can understand that you may not want versions of business logic to align with versions of a release. It is likely there will be far more releases than versions of business logic. It is more like each release specifies which version of the business logic it uses. The idea of a "Latest" may be helpful, but the idea of "Final" is naive. Thoughts? |
Beta Was this translation helpful? Give feedback.
-
Ok so. Some notes:
Ok, now that's out of the way let's get speculative. I will preface all of this: while I like the idea of linking tools and businesslogic versions the risk of adding this complexity and making the system error-prone and unusable to our tool developers is very real so all of this is just pie-in-the-sky for now. 1. Businesslogic could have version gates<Node
label="Outputs"
xpath="Realizations/whatever"
minVersion="1.1.2" maxVersion="2.1.3" /> This would create a choose-your-own adventure inside our businesslogic where, if Pro
<node label="Outputs" maxVersion="2.1.3" >
/* Here's the OLD way */
</node>
<node label="Outputs" minVersion="1.1.2" >
/* Here's the NEW way. */
</node>
Con
<node minVersion="1.1.2" >
/* potentially many lines of XML here */
<node minVersion="1.1.1" >
/* ERROR: This path is impossible */
</node>
</node>
2. Versioned BusinessLogic files.In this version we have actually different files that we publish for different versions of the tools. Pros
Cons
3. Git tagging or ref hash tagging of version toolsIn this example we make the git tag or hash of the tool linked in some way to the git tag or hash of the business logic. this 100% breaks our publishing method for RiverscapesXML and so I won't entertain this at all but mention it here for completeness. |
Beta Was this translation helpful? Give feedback.
-
Thanks so much for this @MattReimer. This is a really helpful explanation, reminder and speculation about things we could do. I like the idea of version gates, and I like how you've laid out pros and cons for these. I think when we get to discussions of documentation (@jtgilbert and @philipbaileynar) and updates to RAVE associated with this we can take your notes and use that to help us. The rest of this seems like something that is > 3.X Warehouse release, but it is good to start thinking about here. |
Beta Was this translation helpful? Give feedback.
Ok so. Some notes:
The name of the businesslogic file must match what is in the
<ProjectType>VBET</ProjectType>
tag exactly. It is case sensitive. This means thatVBET_FINAL.xml
will not work unlessVBET_FINAL
is the name of your project type.That has other implications for Symbology so I think we should not be changing the project type in this way or using it as a way to differentiate versions of the same tool.
Multiple deployed versions of businesslogic for a single project type is currently not allowed. The V1 or V2 you might see are only in regards to the version of the XML itself (think old warehouse Vs. new warehouse); Not to distinguish between two versions of the same tool.
D…