cancel
Showing results for 
Search instead for 
Did you mean: 

Extending VBO funcionality

Armando_Antonio
Level 3
Question: Is there a way to extend or inherit one object functionality into another one? I would like to leave the common Objects (like MS Excel VBO, Collection Management, etc) intact and extend their functionality with new "child" objects. this scenario will consolidate my case in a simple way: I had added new functionality in the Excel VBO and another developer had done the same. We did not share the same BP instance at the moment and when we wanted to merge that into one BP Instance (development or even production) we had to do it carefully, not mentioning that this is error prompt and time consuming. I believe if we can inherit the objects, this kind of scenarios could be solved (bringing other issues but that is for later). I will appreciate any help on this matter. Or if you have best practices for this kind of scenarios, I will glad to hear about it.
4 REPLIES 4

John__Carter
Staff
Staff
There is no inheritance concept in BP I'm afraid. Objects can share an object model, but this won't help in your case. You are right to want to leave the original utility objects intact and create any bespoke logic as separate objects. I would recommend merging the logic of the two new Excel objects into one, and calling it something like 'MS Excel VBO - Extended'. Then agree a policy that nobody changes the original. When it comes to using the Excel objects there are two choices. 1) Use the original for all 'standard' actions and only use the extended object to Attach and run the new functionality. 2) Do not mix the original and the extended objects in the same process. I think there are advantages to both choices, so I'm not sure which is the best approach - maybe others will have an opinion?

DexterWhelan1
Level 4
Hi John, Armando, I have previous experience with both setups of teams altering the standard objects provided or creating a second bespoke 'extended' object. I have also worked with teams in that second option John listed. In the team that used option 2 (one where you didn't mix objects in a process) this lead to a lot more headaches than we had anticipated as it encouraged developers who thought they needed bespoke actions more than they really did, they ended up creating plethora of extended objects for various VBO's and having them related to specific applications work which meant a lot of work was duplicated and it was difficult to find anything useful or unique among them when you needed to. For example using a bespoke VBA sub to send an email via outlook was in 2 separate objects, there was one more action that sent a mail via outlook in vb code INSIDE and object dealing with 'Excel vbo extended' tools. This practice led developers down a path of creating extended functions to suit the projects they were on and when an object didn't fit heir needs fully they felt fully justified to make more extended objects to do what they needed. The real crux of that problem came down to not creating a team wide ethic that everyone was aware of whereby explicit rules were not conveyed to everyone stating not to make a million extended objects. I would not encourage anyone to go down the route of creating multiple extended objects unless they put proper criteria on why and when you make them without proper reviews on what functionality already exists in other objects. How you implement that in a blueprism environment is up to the team to create. Everyone will do it differently. The other scenario of only using one object and not the other led to one complication in a team where someone had created an entire project and released it to prod and it was running smoothly but the a CR came in and some bespoke code had to be made to run it and ended up going in the extended piece so both object ended up being in the process without complication in the end but the far reaching affect was it created an ethos whereby nobody ever used the basic object anymore for any process ever to avoid this complication. From what I remember 3 of the main processes in Live uses the basic Excel VBO but every other process uses the 'extended' one which has caused the 'extended' object to become quite bloated (not the correct word because every action is important, they're not just waste) with quite a lot of bespoke actions, circa 50-60. Ultimately whatever way you would like to create extended objects in blueprism the main problems you will face will come down to how you manage change management in the future if one object becomes large and super important for every running process in the team or how you manage functionality that exists and how the team creates more functionality to add into the code base. In my experience having the one extended object that was large worked out best as the team wrote good documentation on everything (which was a team wide enforced action) and there were some long time devs who were 'responsible' for the object as it had become a core piece for prod systems which meant it didn't get abused by new team members try to ad-hoc some code in that would wreck something downstream.

Armando_Antonio
Level 3
Thank you both for your comments. They have been really helpful.

Jared.Rumball
Level 6
Another question for me is about longer term maintenance. With option 2 where you add your extended actions to a new copy of the standard VBO, how do you manage and integrate updates to the standard VBO when a new version is released by Blue Prism? With option 1 where your object only contains the extended functionality at least that object is then somewhat independent and you can immediately take advantage of any updates to the standard VBO. Even though the approach described in the document ""Extending Capabilities of the MS Excel VBO"" recommends saving a copy of the standard VBO and adding in your functionality there, I think this creates more maintenance overhead and means that over time you may get ""out of sync"" with the standard VBO and possibly missing out on useful new/enhanced features. Also, as new functionality is added into the standard VBO it is reasonably likely that at some point there will be a naming conflict between something you have implemented in your extended object and the standard VBO which you will then need to resolve.