> business.
>
> Hey Jim - what are people using with Cache'?
>
> T
Well, I think that Kevin expressed the philosophy of jBASE, or at least its raison d'etre very well. That is the vendor position for it if you like. However producing a product WITH jBASE allows you to come in at different angles, such as producing embedded products as you suggest. In the case of SCM though I would be very impressed if an MV based product could compete with the likes of perforce.
The idea of jBASE then was that it WASN'T PICK ;-). I.e. you took all the good bits of your application and produced a native application that used whatever it needed from the software pooliverse.
Cache is completely different and is more akin to the standard MV environment, except perhaps that its integration with the world is more comprehensive because, basically, we have more money to make it so! Cache is about being a database and about providing a data model that competes against Oracle, DB2 and the standard SQL model of the world. It does provide SQL models of course, but that isn't the only answer.
Quite frankly Intersystems have been saying and doing what bunches of people in the MV world have been asking for: Promoting a data model and approach rather than trying to hide it. jBASE was the other way around, I said that if you could not compete with the MV model, then let's provide something that gets the best of an application moving in that world. I didn't have the money to market the system in the "real" world directly. That's what Intersystems have done with Cache though, and why I see it as being extremely good for MV, despite the fact that ones first reaction is "Why do we need ANOTHER version of the mV model?". The answer is that we don't of course, what we need is a market player that will go and promote the base platform such that when you take your app into the IT director, he says "Oh yeah - Cache, that's the fastest growing embedded system to there right now isn't it?" and finds himself staring at the advertisement in xyz magazine.
So, all the pre-amble is to set the stage for an answer Tony ;-). Basically, Caché has a development IDE to which we have added capabilities for MV directly. As part of its set up it integrates with source code control systems, which could be Perforce, VSS or a bunch of others of course.
There are lots of add-on products for software configuration and so on, however the game at Intersystems is to try and provide you with [at least] a reasonable version of everything you need. So, out of the box, you get (or in some cases will get, when I have finished typing it in) an IDE, Web development, SQL Engine, Multivalue Engine (actually these are just two aspects of the same thing, which means that both benefit from advances in the other), MQ Series integration, Java classes and so on.
There is also an additional product written within Cache itself, which is more of an Integration engine, such that it can take a message from anything you have a plug-in for (MQ Series, messages queues, databases etc) and massage and translate it into anything else you have a plug-in for. Simple explanation of course - much more on the web sites. But your MV systems will be able to plug-in to this and it is very powerful. For instance anybody that takes data feeds from something or other (Debt collection for instance?) may well use this.
Our intention is that any add-on product out there in MV right now will be able to work with any other Cache product/add-in. However, here we are promoting our database and not the idea that you can place Oracle underneath the app (there are SQL gateways to other engines, but we want your data in Cache!)
Some of the integrations that have been possible have allowed me to experiment with extensions to BASIC, some of which many of you will like very much. For instance, a multi-dimensional array in Cache is much more comprehensive than an MV one. For a start, there can be any number of levels to it, and each level is indexed not just by a number, but by a string key as well. So, I thought we would add this capability to MV BASIC and allow such animals to be stored and retrieved from the native Cache database (rather than a simple hashed file model). Something like this (I have not set the syntax in stone yet):
Dim AccountVar As CacheGlobal
AccountVar("1964","July",14,"Balance")=500.45
This kind of syntax creates a variable which is automatically stored in the database (a Global is the equivalent of a file), and can be mapped into SQL tables and so on. In fact your MV data files are just constrained versions of these globals, whereby there is one subscript, being the Item ID, whose data value is the MV item (complete with AM and VM and SVM etc).
Further the runtime engine in Cache has object capabilities built in, so why not be able to produce and object directly from the DICT definition and use that directly in MV, something akin to:
: CREATE-OBJECT DICT MyFile AS %MV.Data.MyFile
Class '%MV.Data.MyFile' created in namespace "%SYS"
Dim myObject as New %MV.Data.Myfile
OPEN "MyFile" To Fdesc ELSE ABRT 201, "MyFile"
myObject.load(Fdesc,"ItemID")
myObject.Name = "Fred"
... etc
MyObject.Store(Fdesc, "ItemID")
And so on and so forth.
Sorry about the long reply that was only vaguely relevant to your question, but... Onwards and upwards!!
Jim