Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Sunshine

Pages: 1 ... 27 28 [29] 30 31 ... 53
General Board / Re: Is there any solution for Docs Generator (RTF)?
« on: May 05, 2016, 05:23:51 pm »
I've got to agree with Geert and disagree with advice of not using the builtin report generator. I've managed to work with the built in report generator to create 100% of my docs. In fact I've not written a doc for about 5 or 6 years now.  It has been a journey to learn the ins and outs of the report generator but its possible to do virtually anything so long as you use your imagination.

On the other hand it would be nice to improve it with some of the suggestions mentioned earlier.

20 posts before giving Karma. Now thats something I didn't know, thanks

General Board / Re: Arguments for the use of Enterprise Architect
« on: May 01, 2016, 10:16:17 am »
You don't mention the context of use. For instance are they business analysts doing requirements, developers designing software, enterprise architects planning the next 5 years of changes or something else.

Usually some of the above above gain quality and improved productivity by moving from a document centric to model driven approach such as.
  • Easier to manage complexity of all the model elements and their relationships
  • Traceability from requirements to implementation and test.
  • Improved consistency using document generation between the various documents
  • Reduced time to implement using code or database generation
  • Ability to analyse and report using queries and reports. For instance estimate effort or measure complexity

On a personal note I've used modelling approach for a long time now and never had to write a document for years. Just use doc generation from my model which I find much more productive use of my time.
Hope that helps :)

You could try opening the relationship properties dialog and deleting the stereotype "Relationship". That will work and show the name but has the side effect will change it to custom line. i.e. not a curve but straight with a waypoint. To get a curved line change the stereotype to "curve". This will show the name on a curved line - its a stereotype from whiteboard so you need to enable that MDG for it to work.
Tested it out on Sparx EA Corporate Edition V12.1 B1229.

Please click on helpful link to give my a karma a point if you think its useful tip that solves your problem

Here is a thought, a chart is just a class with stereotype "Chart" on a diagram with some extra fields. So try creating a class with stereotype "Chart" for starters then look at whats in the various fields and try populating those via the API.

Thanks for the suggestion Geert whilst it will create the packages it won't address the issue of the diagram objects referencing the packages instead of the classes. I'd actually thought of that approach but realised its limitation for my particular problem. After sleeping on it  I think I'll try to attack the problem  at the database level with some SQL like the following [yet to be fully tested]. I've just got to find something that will run the SQL on the eap file aka Access 97. Unfortunately I don't have Access 97 but 2010 which  won't run queries unless I upgrade the file to Access 2010 format but if I do that  then Sparx EA won't read it. Maybe I'll try transferring the eap model to another repository like feap or SQL Server and find a SQL developer type tool to run it on. Just sharing some thoughts on my way forward.

For now here is that Access SQL I mentioned earlier:

Code: [Select]
/*Convert objects to packages*/
UPDATE t_object
SET t_object.Object_Type = "Package"
WHERE (((t_object.[Object_Type])="Class"));
/*Insert packages into t_packages*/
INSERT INTO t_package
FROM t_object
WHERE t_object.Object_ID>7; /*First 7 elements were already packages so exclude them*/
/*Map old t_object parent IDs to new ones in t_package using notes field in t_package*/
UPDATE t_package AS T1, t_package AS T2 SET T1.Parent_ID = [T2].[Package_ID]
WHERE (T1.Parent_ID)= IIF (IsNumeric ([T2].[Notes]), CInt([T2].[Notes]),0);

PS: Ignore that SQL as I found it didn't work. See later post for TSQL version that does work.

I've received a model which has lots of classes nested within each other. Upon review I realise these should have been modelled as packages. There are a few hundred of these classes that should have been packages. For each layer of nesting there is a diagram showing an overview of the classes for the next level down. There are about 40 diagrams.

I'd like to convert the classes to packages preserving the hierarchy and the diagrams.

Exporting CSV and search and replace from class to package on Type column followed by import. Result was creating of packages but left original classes which were in diagrams. Nearly there but not quite.

Has anyone done this before and if so how?
If not any ideas - looking for inspiration

General Board / Re: Mass Update of Components
« on: April 21, 2016, 08:03:38 pm »
Alternatively here is some JScript Code I've used in the past to convert archimate requirements. Just modify the array at the top to change source object type and stereotype to target object type and stereotype.

Code: [Select]
!INC Local Scripts.EAConstants-JScript

function TypeConversion(sourceObject,sourceStereotype,targetObject, targetStereotype)
    this.sourceObject = sourceObject;
    this.sourceStereotype = sourceStereotype;
    this.targetObject = targetObject;
    this.targetStereotype = targetStereotype;

var Conversions = new Array();
// sourceObject,sourceStereotype,targetObject, targetStereotypea
//Add Array of conversions here
Conversions[0] = new TypeConversion("Class", "ArchiMate_Requirement", "Class", "Requirement");

// =================================================================================
// Name: Element Conversion
// Converts elements type and stereotype as defined in the element conversation table.
// The table is included as a file so it may be changed for other mappings
// Navigates from selected package and recursively modifies each element
// NOTE: Requires a package to be selected in the Project Browser
// Related APIs
// =================================================================================
// Element API -
// Repository API
// Tagged Value API

function StartWithSelectedPackage()
    // Show the script output window
    Repository.EnsureOutputVisible( "Script" );

    Session.Output( "JScript TypeConverstion" );
    Session.Output( "===========================" );

    var thePackage as EA.Package;
    thePackage = Repository.GetTreeSelectedPackage();
    if ( thePackage != null && thePackage.ParentID != 0 )
        NavigatePackage( "", thePackage );
        Session.Prompt( "This script requires a package to be selected in the Project Browser.\n" +
            "Please select a package in the Project Browser and try again.", promptOK );
    Session.Output( "Done!" );

// Outputs the packages name and elements, and then recursively processes any child
// packages
// Parameters:
// - indent A string representing the current level of indentation
// - thePackage The package object to be processed
function NavigatePackage( indent, thePackage )
    // Cast thePackage to EA.Package so we get intellisense
    var currentPackage as EA.Package;
    currentPackage = thePackage;
    // Add the current package's name to the list
    Session.Output( indent + currentPackage.Name + " (PackageID=" +
        currentPackage.PackageID + ")" );
    // Convert the elements this package contains
    ConvertElementsInPackage( indent + "    ", currentPackage );
    // Recursively process any child packages
    var childPackageEnumerator = new Enumerator( currentPackage.Packages );
    while ( !childPackageEnumerator.atEnd() )
        var childPackage as EA.Package;
        childPackage = childPackageEnumerator.item();
        NavigatePackage( indent + "    ", childPackage );

// Converts the elements of the provided package to the Script output window
// Parameters:
// - indent A string representing the current level of indentation
// - thePackage The package object to be processed
function ConvertElementsInPackage( indent, thePackage )
    // Cast thePackage to EA.Package so we get intellisense
    var currentPackage as EA.Package;
    currentPackage = thePackage;
    // Iterate through all elements and add them to the list
    var elementEnumerator = new Enumerator( currentPackage.Elements );
    while ( !elementEnumerator.atEnd() )
        var currentElement as EA.Element;
        currentElement = elementEnumerator.item();
        ConvertElements(indent+"    ",currentElement );


function ConvertElements( indent, theElement )
    // Cast theElement to EA.Element so we get intellisense
    var currentElement as EA.Element;
    currentElement = theElement;
    ConvertElement(indent+"    ",currentElement );
    // Iterate through all embedded elements and add them to the list
    var elementEnumerator = new Enumerator( currentElement.Elements );
    while ( !elementEnumerator.atEnd() )
        var currentElement as EA.Element;
        currentElement = elementEnumerator.item();
        ConvertElements(indent+"    ",currentElement );

// Parameters:
// - indent A string representing the current level of indentation
// - theElement The element object to be processed
function ConvertElement( indent, theElement )
// Debug Comment out when run for real
    //Session.Output( indent + "CALLED: ConvertElement with " + theElement.Name + " [" + theElement.Type + ", " + theElement.Stereotype + " )" );

    for ( var i = 0 ; i < Conversions.length ; i++ )
        // If stereotype matches source list then convert
        if ( (theElement.Stereotype == Conversions[i].sourceStereotype) && (theElement.Type == Conversions[i].sourceObject ))
            Session.Output( indent + "CONVERTED: " + theElement.Name + " (" + theElement.Type + ", " + theElement.Stereotype + ")" + "=>" +"("+Conversions[i].targetObject+","+Conversions[i].targetStereotype+")" );
            theElement.Type = Conversions[i].targetObject;
            theElement.StereotypeEx = Conversions[i].targetStereotype;
            break; // once found cease iterating through for-loop.



 And please don't tell me again to follow the online help because I have and is rubish.

Well I have to disagree. I've found online help very useful when creating an MDG. I've managed to successfully extend ArchiMate MDG. The online help for Sparx EA is head and shoulders above other tools I've used in this space.

General Board / Re: Repository Size
« on: March 24, 2016, 08:48:57 pm »
The old question of how long is a piece of string aye?
Over the last 10 years or so with various organisations I've notice about 100Mb per user on average per year in teams where people use it everyday. But as previously mentioned it really depends on the number of elements. It also depends on embedded documents as well. These can really bloat out the DB. Some people put more in the repository than others.

Remember an EAP file is really an MS access database so you'd be pushing the limits. You probably want to use something better like SQL Server as the repository.

If you use a cloud based DB like SQL Server in Azure then you can start of with 1GB and adjust according to usage.

General Board / Re: Archimate2 Metatypes and SQL
« on: March 24, 2016, 08:33:40 pm »
In the past I've some inconsistencies like this. The reason was that more than one stereotype selected on the element for some reason. Think the cause was someone created a location with another archimate type like node then tried to change it by dragging the location from the tool box onto the element in the diagram. The result was it had archimate_node and archimate_location selected. You can open the stereotype in the element and uncheck the stereotype not required. I've also seen people try changing element's stereotype by checking another but not unchecking the original resulting in two stereotypes.
You can fix it by running a script and setting just one stereotype or doing it manually via the user interface.

Yep its a lot of effort to extend archimate 2 in an mdg. If all you want to do is add tag values to existing archimate elements then I know a few people addressed this by running a script to add tag values if they don't exist. You can do this via jScript or vbScript and put this script in the project browser so you can limit it to a package. Its not ideal but its effective and quicker to implement.

General Board / Re: copy/paste sounds
« on: March 07, 2016, 07:11:57 am »
That's what I do now.
Seems to effect my music streaming :<)

Go Start | Run start typing volume and you'll get "Adjust system volume".  Mute or lower the volume of "system sounds", not whatever app you're playing music with.


General Board / Re: copy/paste sounds
« on: March 05, 2016, 11:28:14 am »
Mute the sound on you machine

Bugs and Issues / Re: EA12 with Oracle repository is very slow
« on: March 01, 2016, 07:33:20 pm »
I can confirm that over the last 8 years every time an organisation has used Oracle for Sparx EA we've had performance issues. You need a really good Oracle DBA to tinker with the DB to get Oracle to perform. The other performance bottle neck can be the network and its some times difficult to get the Network and Database folk to work together to find the problem. Best bet is to use MSSQL Server or MySQL if you can to see if that works better. If it does then you know it was probably the Oracle DB. On the other hand if you're stuck with Oracle get the DBA to optimise. If the DBA can't make it perform then may be it might be the network or maybe the DBA isn't a good as they claim.
Problem solving techniques like Kepner Tregoe can sometimes help find the cause working across multi disciplines like network and database folk.

Pages: 1 ... 27 28 [29] 30 31 ... 53