Concept Of Design
There is a complex interaction between the User, the file(s), the database and the version management system needed.
(Most of) these interactions are noted in the workflows below.
All functionalities interact with each other.
What is happening with the version handling and the database.
- The database that is part of the item can be locked
- The database that has knowledge of all available items not
- The database that is related to the CAD files is part of the versioning system
- If a CAD file is released, it's related (database) item is also released
- From the database interaction the version system gives the user write access
- From the database interaction the version system releases the user write access.
A user wants to edit a file, here is the logic that occurs:
- The database needs to be checked if the file is
writable()
- The database needs to be checked if the user is allowed to check-out the file
- Not in release state.
- Not Checked-Out by another user
- Give the user write access in the version system AND block all other users.
After finishing the edits:
- Save the file to the server
- (Automatically) edit the database Attributes regarding changes
- Check-in the file
- Release the write access AND release the block of other users
- Within which databases is set who checked-out a file? Is that on an object level or at main level?
A user wants to edit an Attribute (what is part (not CAD part) of the database), the logic is involved:
- The database needs to be checked if the item where the attributes belongs to are writable (AKA not locked).
- Not in release state.
- Not Checked-Out by another user
- Give the user write-access in the version system AND block all other users.
After finishing the edits:
- Save the changed attributes to the server
- (Automatically) edit the database Attributes regarding changes
- Check-in the (database) item
- Release the write-access AND release the block of other users
- This step should also work for multiple attributes from multiple file(s) (and filetypes).
A user wants to release an Item (basically the CAD model, CAD drawing, database Item, and other documentation):
- The database needs to checked what files are already released
- Fulfill the Engineerings Change Process (not described, but basically a set of checks)
- Database Change all Attributes that are affected to a higher revision number.
- Database Change all Attributes that are affected to a Release state.
- The affected database items are locked AND the affected files (file locations) are locked for All users.
- This step should also work for a whole module / assembly structure.
A user wants to change an previously released Item. For example, a CAD file.
- The user requests a change to the needed file(s) AND the (database) item
- (Optionally) accepted by supervisor
- (Optionally) a copy is made from the released version so a changed version can always be reverted.
- Database Change all Attributes that are affected to an InWork state
- Workflow 1
- Optionally Workflow 2
- Workflow 3.
- This step should also work for a whole module / assembly structure.