Do you work in a multi-user environment and on a shared metadata base? Do you share other graph elements (connections, lookup tables, sequences, ...) among multiple graphs and users too? Then read on – you’ll enjoy a new CloverETL feature: element locking.
Let's assume you have shared metadata used in two graphs that are managed by two different people. Obviously, both graphs are sensitive to any changes of the shared metadata definition. This is where locking comes into play. Locking is a simple tool to warn users looking to make changes to the metadata that the resource is sensitive and should be altered with caution.
As of CloverETL 3.3.0-M1, a user can lock an element and even add a lock message that will be displayed whenever someone tries to change the element. When another user attempts to make these changes, he or she must explicitly unlock the element before the changes can be applied.
Note that the lock is not meant to block other users from modifying the element. Instead, it's a flag indicating to users that modifying the element may cause some problems, or that some additional steps must be done when such modification takes place (e.g. contacting the user who locked the element, updating a database, adjusting related elements, etc.)
Let's take a look at a simple example. We have a graph SyncGraph that reads payment records from an external source provided by a bank and transforms the data to a format we use internally. We need to run this graph repeatedly at given time intervals to keep payments synchronized.
We also have a bunch of other graphs using the very same "payment" metadata. Imagine, that someone wants to change the "payment" metadata. This change can easily cause our SyncGraph to stop working correctly. Thus, we would like to leave a message for anyone attempting to change the "payment" metadata. How can we accomplish this? Well, with the help of element locking this can be done pretty easily. Just right-click an element (or multiple elements) you want to lock and choose the Lock action from the context menu.
A dialog will appear where you can enter a lock message:
The lock state of the metadata is visualized by an icon in the Outline:
When User2 opens the metadata editor, the lock message is displayed in the bottom of the dialog together with an Unlock button:
After pressing OK in the metadata editor for locked metadata, a warning dialog appears. For changes to take place, User2 must explicitly confirm unlocking of the metadata.
By using element locking, User1 is able to alert User2 about modifying metadata if she is not aware of the possible problems she can cause.
Locking can also be used in a single-user environment to remind you of the necessary actions after changing an element-- when modifications of the element happens rarely and there is a risk of forgetting them. Although the main purpose of locking is to lock external elements (as those are mostly shared between users), in this case you can make use of locks on internal elements as well.
To ease the use of this feature, you can even lock multiple elements of different types. This is especially useful in situations where you would want to lock related metadata, connections, etc. all at once.
Apart from metadata, you can also use locking with connections, sequences, and lookup tables. Note that this refers to editing the properties of the element, not actually using it and modifying it during a transformation.
Undoubtedly, with element locking one can avoid many problems with both multi-user and single-user environments. With this new, easy-to-use feature, modification of elements becomes a much safer, clearer process.