Skip to main content

I have a relatively simple (I hope) question around smartobjects and the way they work from a persistance perspective.


Briefly, we're busy evaluating K2 Blackpearl as a BPM platform as part of an excercise including a few other BPM products. The one area of concern to myself and a few of my colleagues is the subject of the Smartobjects and how it stores and presents the data. 


As I understand it, the smartobject would be (or could be) used to collect various bits of data about a single entity, let's call it "Client", such as the name, id number, postal address, various investments, investment types, etc, etc. Some of this data will be data captured from a screen, while some of this data will be retrieved from a number of external sources.


For example I capture an ID number on screen, and type in a comment. The ID number and comment is saved as data in 2 of the fields in the Smartobject. There is, however, some existing information (say, investment type and amount) in the back-end systems about the client based on the ID number which needs to be retrieved, which we will do from 2 different systems (1 for each type of investment) by means of some web service calls. We may also make a direct query into a database  to retrieve this client's postal address.


So, as it stands I'll have a Smartobject with ID No, Comment, Inv1 Type, Inv1 Amount, Inv2 Type, Inv2 Amount, Postal address.


I'll then make reference to this Smartobject throughout the process instance to determine what needs to be done, etc, etc.


So, my 2 questions are;



  1. Am I understanding the basic purpose and usage of a smartobject, and 
  2. Where and when does the data get gathered into the smartobject? 

Say for example, I create the smartobject once the ID number and comments have been captured, does the smartobject then go and retrieve all the data for the other fields on smartobject creation, or will it wait until I reference that field before it makes the web service call to retrieve the data. 


I guess our concern is that if we have a fairly complex Smartobject, one that has many fields, all referencing different back-end systems (which would be wonderful from an integration perspective), do we have to worry about performance because everytime we embark on a new activity, the whole smartobject is refreshed from the external data store, or will the external links be engaged only as and when the data is required. 


This is a very simplified summary of our general concern around Smartobject performance. It's an assumed issue, sure, but we've yet to hear, see or read something solid that could put our fears to bed / confirm our fears.


So, any input, advice, links to reading material, etc would be very much appreciated.


Thanks all in advance.

Hi Galrilion,


Here are some links to get you started.  SmartObjects can be a complex discussion and without the proper background a daunting one.
Please refer to the links and ask some more questions if you'd like:

http://www.k2underground.com/blogs/articles/archive/2008/04/24/talkin-smartobjects-by-jason-apergis.aspx
http://www.k2underground.com/blogs/howtok2/archive/2007/11/02/how-to-k2-video-series-on-smartobjects.aspx (There are 8 videos if I'm not mistaken, find them all here http://www.k2underground.com/blogs/howtok2/default.aspx).


Hope this gets you on your way.


Regards,
Frikkie!


Reply