Showing posts with label Plex. Show all posts
Showing posts with label Plex. Show all posts

Tuesday, July 24, 2018

The magic roundabout....


“Computer Associates (CA), where products go to die!”

If you were around in the late 90’s and early noughties, the statement above was industry standard and after a brief rename to the COOL range from Sterling Software prior to the CA acquisition in 2000 the tools known as Synon (now CA 2E) and Obsydian/Plex (now CA Plex) have been maintained and supported by CA.

Correction from above…. CA did in fact (the early years) innovate with the tools quite frequently and with good features and enhancements.  CA were responsible for the introduction of the Web Option, Triggers, RPGILE Generator, numerous SQL’s updates and Web Services for 2E as well as .NET Generator for CA Plex (no small feat), Web Services publication and consumption as well as keeping up with a myriad of technology platform refreshes Plex required. 

All in all, a reasonable job. 

Perhaps a 6 out of 10.

Okay, 5.

The point being that these products didn’t go to CA to die. However, in recent years with development budgets reduced and key personnel leaving the rate of change has stalled significantly.  So much so that nowadays a release highlight are items that would have been reserved for minor features or even bug fixes in years gone by.

Whilst the tools haven’t died they are clearly in maintenance mode.  CA moved this group of products to sustaining engineering.  This has a negative context whilst a product is in decline and I feel that other low-code options with better target platforms coverage have emerged into a space once dominated by case and code generation tooling.

Last week Broadcom announced a cash buyout of CA Technologies for over 18b dollars.
Broadcom doesn’t do software…they are a semiconductor business so what does CA provide them:-

  1. They may be diversifying their offerings and product range.  Perhaps there are some key products in the CA range that assist in their growth or CA has strong alliances with certain business verticals or a client base the parent organisation may wish to gain access to.
  2. Or this is purely a financial decision.  They may have too much cash to burn and need to spend it quickly.  They buy a solid company with a long and attractive maintenance trailing revenue stream and secure long term (almost guaranteed) recurring revenue.  Most likely this means they won’t need to pay any corporation tax for the next year or two as they assimilate this monster of a business.

Perhaps a mix of both but my money is on the second option and that this is merely a financially driven strategic purchase.  

There certainly isn’t any institutional importance for the CA development tools business i.e. CA 2E, CA Plex and CA Gen.  Although these areas are likely to show very high ROI i.e. cost vs revenue on the reporting charts I very much doubt they’ll get anymore focus than they there are currently getting.

Now it would appear, that the final resting place for these (once wonderful and genius) tools is going to be Broadcom.  The new statement being “Broadcom, a place where CA Technologies development tools go to die!”

STOP THE PRESS!!!!!!!

Hopefully not, I hope that the residual value and with opportunities in a safe pair of hands i.e. a company with a low code focus. It is possible to recapture the essence of CASE and reinvigorate these tools.

Probability?: < 10% if Broadcom don’t want to relinquish these tools.

Lee’s take out!

Sadly, it’s probably time to work out what the next big thing is… These tools are now compliance/maintenance focused (at best) and will be stabilised (cease to be supported) as soon as the revenue trail drops below x, whatever x is.  

x for CA or Broadcom is far higher than x for a passionate low-code only vendor.  I beg Broadcom to review the business units at CA and seek a buyer (at a fair price) so this technology has a chance to thrive once more.  These tools practically invented low-code.  In my eyes they are 20 years ahead of the rest.

Thanks for reading.

p.s. I wonder what theynew name will be....Broadcom Plex doesn't have that good a ring to it.....




Wednesday, March 28, 2018

Look back... The good old days

Some very fond memories involving the early adoption of plex and some great friends and colleagues at one of the UK's Plex evangelists.



Thanks for reading.
Lee.

Sunday, October 2, 2016

CA Plex and Unity3d - A visual comparison....

I feel like I've been here before.......

I love CA Plex together with 'what it does' and 'how it does it'.  In terms of developer productivity I believe it is only now being matched by modern day development tooling.  Yet CA Plex was born over 20 years ago.  I am also seeing an up-swell once again towards low-code or code generation so who knows what the future entails.

Personally, for me I have always been interested in developing games and I gradually move my focus in this direction.

I've been doing game development as a serious hobby/business and despite trying many different game engines (and I promise I've tried quite a few over the last 20 years) I have settled on Unity from Unity Technologies www.unity3d.com.  A few other engines I like for smaller projects and rapid prototyping of game ideas but it's Unity for me for implementation.

So to all those CA Plex developers out there who like me enjoy programming games, here are a few visual comparisons that might help to explain why I like the tools.

IDE

This layout looks quite familiar.



Coding

One language.

This is a slight lie as Plex uses a pseudo language known as Action Diagramming and Unity has C# or UnityScript (a derivative of Java), so two languages.  But the philosophy is the same i.e. master a language to solve lots of different programming problems regardless of target platform.



Building

Multiple different build targets from the same repository.

I feel that the common ground makes them and me, quite compatible.



And like Plex you can also play around with the icons for scripts, so now I have the best of both worlds for my projects.



If any other Plex or 2Er's out there also dabble in Unity, get in touch.

Thanks for reading.
Lee.

Monday, April 30, 2012

You either read my blog because you are a CA Plex and/or CA 2E programmer and you are keen for a different perspective or you may have googled Plex and landed on my site instead of the other technology out there called Plex and not CA Plex.

Anyhow, a few things have happened in the CA Plex and CA 2E marketplace in recent weeks so I though a quick round up would be in order.

  1. Plex 7.0 has been released with the new .NET Client generator option.
  2. 2E version 8.6 has been released with the marquee feature of passing arrays as parameters and therefore ability to easily deal with result sets.   For both of these look at the CA website for details on how to download etc as well as accompanying web casts and PowerPoint presentations.
  3. Is a nice article about Plex.  http://www.mcpressonline.com/dev-tools/ca-plex-could-be-the-best-development-tool-of-all-reader-says.html   There may well be more to come with this.
  4. Is that Websydian are launching the latest version of their patterns (version 6.5), that webcast is tonight my time here in New Zealand.
  5. The Plex-XML guys are quite busy working in the background as this framework begins to make strong traction in the CA Plex community.

Thanks for reading.
Lee.

Friday, March 2, 2012

Beginners Guide to the CA Plex Model API using C# .NET - Part II - 'Model API and the model repository'

The first post in this series late last year touched on the power of the Model API and how it could be useful for us Plexxers out there. 


I envisage us automating trivial tasks, extracting information from a model, import system designs into CA Plex, integrate the IDE with other environments/tools as well as code generation productivity tools like my Entity Creator!!!!!

Today we will cover some of the theory, Part III will highlight some of the core methods that you can use to interrogate/update the model and finally Part IV will show you a basic example in C#.NET (DotNet) and give you some other little tips and tricks along the way.

We all know what the Model API is, “don't we!”, but just in case here is my take on it.  Put simply, it is a gateway, interface, framework for interacting with your CA Plex environment and your local model(s) and it is implemented as a COM API.  CA ships a great local model and plenty of documentation to get you going and Google will reveal numerous posts from community members in our forums.

So let's get started.  To truly get the Model API and how it works you need to remind yourself of the underlying repository that CA Plex uses.  A great place to start is with the 'Model Editor' and understanding its design layout.  The ‘Model Editor’ is probably one of the most used editors and with a good understanding of how this triple store works you are set up for Model API programming and Meta Coding techniques also .

Fig 1. Below shows the CA Plex Model Editor focused on a field object FIELDS/YesNo which is a basic single byte status field with a couple of values that is shipped as part of the CA Plex patterns.


The next couple of images might be a bit patronising for the long term CA Plex user so apologies if the next minute of your life is repeating what you already know.

You will see that the model editor has three distinct columns.  Column A is the Source Object column in CA Plex terms, Column C indicates the Target Object and Column B contains the linking Verb that help describes the relationship between the two objects.  Collectively this line is known as a Triple, multiples of these are known affectionately as Triples and they reside in the Triple Store.

Above this area highlighted in yellow below are fields that tell you what the source and target objects are.   This is the Object Type.  i.e. Entity, Field, Table, Interface etc.

So let’s transpose this knowledge onto Fig 1.

Column A (Red) = Source Object(s)
Column B (Red) = Verb
Column C (Red) = Target Object(s)
Object Types (Yellow)
Triple (Blue)



Let’s recap, key learning items for Model API terminology are Source Object, Target Object, Verb, Triple and Object Type and these will be referred to throughout this series of posts.

Back to the Model Editor

We know that the Model Editor can show you all triples for a Source Object and defaults to one level.  All the triples at this level are known as real i.e. they are implicit and not inherited.  If you show the object properties for the field FIELDS/YesNo you will see this clearly in the Object Properties window.  This is a key reference window when using the Model API and is your friend, trust me.



The other three properties that are NOT real are of course inherited.  As inheritance is defined using the ‘Is A’ verb, in this case FIELDS/YesNo – FLD Is a FLD – FIELDS Status.  YesNo inherits from the FIELDS/Status field. 

Double click the Target Object FIELDS/Status in the Model Editor and you will see the inherited triples mostly relate to the details in the Object Properties window.  There is a small exception with the Control SYS triple which is a bug/feature/design consideration but I will leave that out of scope for this post, just note that it is there.



Generally speaking if a triple is repeated or overridden at a higher level it (the implicit triple) takes precedence over the inherited triple and therefore they are not shown.  i.e. The Limits SYS (All) triple only shows at level 1 but in fact it is entered at both Level 1 (FIELDS/YesNo) and Level 2 (FIELDS/Status).

The rest is just about understanding how to traverse through objects and related triples in the model.  There are also lots of other cool API methods to help with automation.

Post III will go into more detail about the methods that are available within the Model API with a focus on traversing the Model Editor and its triples.  Hopefully, introducing the concepts above will help you succeed.

Thanks for reading.
Lee.

Friday, December 16, 2011

The Sorcerers Apprentice.

Hi,

I have been aware of the 'Varianted Source Code' models that Roger Griffith has made available for the community for quite a while and today with the release of version 1.1 which has C# client code support all ready for the GA Release of CA Plex 7.0.  We now have some additional sources :-).  FYI - I don't know when this is coming out but it can't be far away now :-).

See the link below.


There are always Pro's and Con's of any approach but this solution seems pretty fair to me. Obviously, if you are a C++ and RPGIV typical client server customer and not changing in the near future then this post will be of little relevance (or is it - read on).  I can think of only one other small issue in that if you prefer to use triples for setting the language at a function level rather than variants then this might need some re-factoring.

If, however, you are planning on migrating your client (or server for that matter) to c# .NET/Java etc you may as well start to reduce your impact for the big move.  By replacing your own source code calls for the shipped code supported by the varianted models sooner in the process you can only win. Remember these are available NOW and can be used with Plex 6.1.

This only leaves your own 'personal' or 'application specific' source code.  A little like User Source in 2E sometimes these are just fit for a purpose and not migratable.  Others simply may need tweaking.  Not a bad time to do some impact analysis and determine whether you need to brush up on some C#.

Therefore, I have a small challenge for people.  If you have some useful generic Source Code.  Any language (Java, C++, RPG IV or C#), let's share it and see if others can convert it across all the platforms.  Then Roger and his team could keep the shipped models up to date and everyone's a winner.  For every routine that is sent to me I will PERSONALLY ensure that they are all converted to relevant C# code.  Any volunteers from the community to pick up C++, Java and RPG IV?  I can get these done but not as quickly I am afraid :-(.  This is courtesy of my bosses at www.sasit.co.nz

I'm thinking of advanced String routines like.


  • Count xString occurs y times in zString
  • Replace Double Spaces with single space
  • IsNumeric?
  • IsAlphaNumeric?
  • PasswordStrength
  • Is CharactersOnly
  • CalculateStringLength
  • ReserveString
  • SentenceStyleCase
  • IsEmailAddress?
  • Replace xString with yString in zString
  • GenerateRandomNumber (Start, Max, ZeroFill?)
  • GenerateRandomString xLength


I'm sure that this list could get quite exhaustive (Suggestions welcome) but I am happy to co-ordinate this effort if people just add some stuff they want to share to the comments section.  So cut and paste some code and a description or just make a request.  

Thanks for reading. 
Lee.

P.S. Disclaimer - if code is Copyright please include and acknowledge source etc.

Friday, November 25, 2011

The great CA Plex 'Entity Creator' - Update


What started out as a wee (little) test application for me to learn and understand a bit about DotNet C# and the CA Plex ModelAPI has blown out (my obsession) into a full featured Entity Creation Utility.   I am also fully aware of the differences in terminology and approach between us Plexers and DotNetters which has been really useful for my company as we have a whole host of different development skills and disciplines and I feel like I can cross communicate J

The cool thing is that my employer http://www.sasit.co.nz/ (shameless plug I know) and our clients (current and future) will benefit hugely from this development when they see just how easy it is to enter all the relevant details into a CA Plex application model and generate code for all our target databases.

If I am to be honest there is still quite a lot to finish off like:-

·         Entering Non-Key fields (Next project)
·         Dealing for Foreign Key Relationships/OptionalitySYS and Virtual Fields
·         Advanced validations
·         Error Rollback
·         Schema Import

Not to mention a rethink on the GUI and the application C# architecture now that I have learnt a lot more about this environment.

·         Code layout and structure
·         Object design
·         GUI i.e. A TreeView control or something similar etc

However, for a work in progress (WIP), another one of those TLA’s  I think that it is worthy blogging about and giving some screenshots.  All feedback is useful and appreciated and I believe I have finally fixed the comments section too. J

This all started in a innocent post called RTFM and I will also follow up with some addition posts around the way I went about it and the features of the ModelAPI, along with a few of the traps that I fell into along the way.

The premise of the original exercise was to be able to quickly create a standard CA Plex entity with our default inheritance, Surrogate Key field and some internal naming conventions honoured....  I am now at the stage where the utility handles Surrogate (The DotNetters call this an auto increment key) and/or Natural Keys, File to File key relations, override attributes, labels, narratives and low level field and file/view implementation naming.  A far cry from the original brief and I still have a roadmap as long as my arm.

So take a look below at a few screen prints with some basic commentary of what the utility currently achieves for me and future posts will show you the finished utility (Hopefully).

Overview

A simple model with three entities






























Fig 1. CA Plex Object Browser

These represent a standard Grandparent, Parent, Child hierarchy.  These could have been modelled differently without ‘Owned By’ etc but that modelling approach is debate for another day.  For now the triples that describe this 3 tier relationship have been entered as below.



















Fig 2. The selected entities definition triples.

Taking a closer look at Entity ‘LV3 level 3’ you will see its entity attributes described as











Fig 3. The entity attributes showing no overrides.

i.e. Very simple and no attributes and no renaming of fields etc.

We implemented a policy at our shop of using TLA (Three letter acronyms) to describe of business entities and we like to replace the inherited field names whether they are resolved via a Owned By, Refers to or even as virtual fields.  This is just a ‘in-house’ preference and (we feel) aides with the myriad of people who need to write queries, data warehouse data extraction and other extracts like data downloads and excel spreadsheets.

We also tend to follow through the TLS naming convention for our tables (physical files) and views etc rather than defaulting to the generated names.
















Fig 4. The File and Implementation names for the table and default views.

And I haven’t even covered labels for the fields and entity and field narratives.  As you are all aware this can lead to quite a bit of entry on our part for even a simple entity.

HENCE MY LITTLE UTILITY!!!!!.

I introduce the aptly named ‘Entity Creator’, I wanted to say that with a Boxing Ring influenced Master of Ceremonies voice but realised that wouldn’t translate on a textual blog. 

Entity Creator as described a little above is a wizard that guides the developer through the perilous task of setting up an entity and its fields. (Currently tailored to our environment, but adaptable and extendable enough for others to take a look).

So let’s for demonstrable purposes add an extra level to our setup called ‘LVL Level 4’.
























Fig 5. The first of the Wizard screens.

By not selecting a Surrogate based key we are therefore selecting natural keys and we get an opportunity to enter the ‘Owned By’ and ‘Known By’ relationships.
























Fig 6. Natural keys showing ‘Owned By’ entities for selection.

This shows a selection of ‘Owned By’ and a list of the business entities in the model.  The application stores a list of the business entities so some set up is required for old models but that would be straight forward to complete or I might even just import them sometime in the future.  Roadmap item?

You will see that the keys of the chosen entity are displayed for instant developer feedback.
























Fig 7. Natural keys showing ‘Known By’ field and the options for key selection.

Now let’s enter the ‘Known By’ for this entity.  You will see that a different field set up is presented to the user and you simply enter the field name (The prefix is automatically applied so no need to repeat this).  And the select from a choice of fields (Configuration roadmap item already noted J).

If applicable the character length and decimal places override are available.  If these are left blank the details as depicted on the screen apply through normal inheritance.

Note: As I was new to C# and .NET (DotNet) I decided to hard this to 5 fields.  I don’t regret doing this from a learning perspective but I will refactor the application in the future to perhaps display these in the different way.

Clicking next will take us to the Field Labels and Narrative screen which can be bypassed (if you wish).
























Fig 8. Editing of the labels for a field.

You will see I have indicated the values for the labels and field narrative for the ‘Known By’  The ‘Owned by’ labels and narratives are already present due to the inheritance (assuming you entered them).  In the future this screen will also handle the non key attributes, refers to and virtual fields too.  I’ve just got to get a bit better at Dot Net first.

The final screen is the confirmation screen.

You get to choose what triples/objects are or are not created for your entity and also you can see the statistics i.e. what was created.  ‘Show Summary only’ is the number of objects, triples and narratives and the timings.  ‘Summary and Detail’

Once you have created the entity you should see something like this.
























Fig 9. Options for what we want created and the user feedback.

This is 17 objects, 33 triples and 2 narratives created and entered in 377ms.  Not bad aye!!!
























Fig 10. Some of the new objects, triples and narratives shown in the model.

So I hope you like what you have seen and I thank my company http://www.sasit.co.nz/ with allowing me the time to learn more about these technologies. (Visit our website for ideas on what we can do for your IT business).   I hope that this blog inspires you to look at this technology yourself and I’d be delighted to assist with your projects.

Until next time.


Thanks for reading. 
Lee.