Generating a Business Model

The next thing you will need generate is a business model. This is the magic behind the code generation. Most everything in life is naturally hierarchical, your family, your work organization, data relationships, user interfaces, security models, etc. Business models are broken into the following levels: stakeholders, organizational units, roles (people and systems), responsibilities (or features - for systems), tasks, and data items. Once you get to the data item level, then you can define the detail that results in properties of entity models, columns in database tables, and elements on a screen.

Levels of a Business Model

  • Stakeholders - Entities internal or external to the organization
  • Organizational Units - Departments, division. Any logical decomposition of an organization
  • Roles - People or systems.
    • People - Titles are preferred: Chief Financial Officer, Financial Analyst, Staff Assistant, etc.
    • Systems - Computer applications, hardware components, routers.
  • Responsibilities/Features
    • For people roles - Responsibilities. Preference in noun form: daily sales, time reporting, call management, public relations, etc.
    • For systems - Features. Same as responsibilities, preferred noun form: time capture, billing, packet forwarding, etc.
  • Tasks - Description of the tasks involved in a responsibility. These are the verbs.
  • Data Items - Anything in data form tied to a task: Spreadsheets, paper forms, reports, data entry screens, etc.

Not everything for every level above needs to be identified. In fact, a business model may have nothing to do with a business, i.e. a fantasy game. You may be starting at a single person (role) level. The levels are simply guides to lead to tasks and data items, the real meat of a business model.

The following is an example of a business model diagram:

Hydra comes with a starter business model template. The default template is located here: C:\Program Files (x86)\CloudIDEaaS\Hydra\GeneratorTemplates\Default\businessModel.template

Generate businessmodel

To generate a business model, run the following:

hydra generate businessmodel --template <templatename>

For example:

hydra generate businessmodel --template "C:\Program Files (x86)\CloudIDEaaS\Hydra\GeneratorTemplates\Default\businessModel.template"

A shortcut for using the default template file:

hydra generate businessmodel --template default

or simply:

hydra generate businessmodel

You can also provide your own template and use the first example, passing in the path. The above commands do nothing more than convert a flat file (tab delimited) to an equivalent JSON file that is more easily read by further generator commands. Below are examples of the businessModel.template and the resulting json file:

businessModel.template

Resulting businessModel.json

{
    "Children":
    [
        {
            "Id":2,
            "ParentId":1,
            "Name":"contoso Internal",
            "SingularName":null,
            "Level":"stakeholder",
            "ClassName":"stakeholder",
            "UserRoles":null,
            "StakeholderKind":"InternalRoot",
            "IsSystemRole":false,
            "IsPseudoRole":false,
            "PseudoRoles":null,
            "ShadowItem":0,
            "IsApp":false,
            "IsDataItem":false,
            "AppSettingsKind":null,
            "IdentityKind":null,
            "IsSystemTask":false,
            "TaskCapabilities":null,
            "ShowInUI":false,
            "UIName":null,
            "UIKind":null,
            "UILoadKind":null,
            "Children":
            [
                {
                    "Id":4,
                    "ParentId":2,
                    "Name":"contoso Administrator",
                    "SingularName":null,
                    "Level":"role",
                    "ClassName":"role",
                    "UserRoles":"Administrator",
                    "StakeholderKind":null,
                    "IsSystemRole":false,
                    "IsPseudoRole":false,
                    "PseudoRoles":"User",
                    "ShadowItem":0,
                    "IsApp":false,
                    "IsDataItem":false,
                    "AppSettingsKind":null,
                    "IdentityKind":"Administrators",
                    "IsSystemTask":false,
                    "TaskCapabilities":null,
                    "ShowInUI":true,
                    "UIName":"contoso Administration",
                    "UIKind":null,
                    "UILoadKind":null,
                    "Children":
                    [
                        {
                            "Id":5,
                            "ParentId":4,
                            "Name":"User Administration",
                            "SingularName":null,
                            "Level":"responsibility",
                            "ClassName":"responsibility",
                            "UserRoles":null,
                            "StakeholderKind":null,
                            "IsSystemRole":false,
                            "IsPseudoRole":false,
                            "PseudoRoles":null,
                            "ShadowItem":0,
                            "IsApp":false,
                            "IsDataItem":false,
                            "AppSettingsKind":null,
                            "IdentityKind":null,
                            "IsSystemTask":false,
                            "TaskCapabilities":null,
                            "ShowInUI":false,
                            "UIName":null,
                            "UIKind":null,
                            "UILoadKind":null,
                            "Children":
                            [
                                {
                                    "Id":6,
                                    "ParentId":5,
                                    "Name":"Manage Users",
                                    "SingularName":null,
                                    "Level":"task",
                                    "ClassName":"task",
                                    "UserRoles":null,
                                    "StakeholderKind":null,
                                    "IsSystemRole":false,
                                    "IsPseudoRole":false,
                                    "PseudoRoles":null,
                                    "ShadowItem":0,
                                    "IsApp":false,
                                    "IsDataItem":false,
                                    "AppSettingsKind":null,
                                    "IdentityKind":null,
                                    "IsSystemTask":true,
                                    "TaskCapabilities":"Search,List,Create,Read,Update,Delete",
                                    "ShowInUI":true,
                                    "UIName":null,
                                    "UIKind":null,
                                    "UILoadKind":null,
                                    "Children":
                                    [
                                        {
                                            "Id":7,
                                            "ParentId":6,
                                            "Name":"User",
                                            "SingularName":null,
                                            "Level":"data item",
                                            "ClassName":"dataitem",
                                            "UserRoles":null,
                                            "StakeholderKind":null,
                                            "IsSystemRole":false,
                                            "IsPseudoRole":false,
                                            "PseudoRoles":null,
                                            "ShadowItem":0,
                                            "IsApp":false,
                                            "IsDataItem":false,
                                            "AppSettingsKind":null,
                                            "IdentityKind":null,
                                            "IsSystemTask":false,
                                            "TaskCapabilities":null,
                                            "ShowInUI":false,
                                            "UIName":null,
                                            "UIKind":null,
                                            "UILoadKind":null,
                                            "Children":
                                            [
                                                {
                                                    "Id":14,
                                                    "ParentId":7,
                                                    "Name":"User Preferences",
                                                    "SingularName":null,
                                                    "Level":"responsibility",
                                                    "ClassName":"responsibility",
                                                    "UserRoles":null,
                                                    "StakeholderKind":null,
                                                    "IsSystemRole":false,
                                                    "IsPseudoRole":false,
                                                    "PseudoRoles":null,
                                                    "ShadowItem":0,
                                                    "IsApp":false,
                                                    "IsDataItem":false,
                                                    "AppSettingsKind":null,
                                                    "IdentityKind":null,
                                                    "IsSystemTask":true,
                                                    "TaskCapabilities":"Read, Update",
                                                    "ShowInUI":false,
                                                    "UIName":null,
                                                    "UIKind":null,
                                                    "UILoadKind":null,
                                                    "Children":
                                                    [
                                                        {
                                                            "Id":15,
                                                            "ParentId":14,
                                                            "Name":"contoso",
                                                            "SingularName":null,
                                                            "Level":"system",
                                                            "ClassName":"system",
                                                            "UserRoles":null,
                                                            "StakeholderKind":null,
                                                            "IsSystemRole":false,
                                                            "IsPseudoRole":false,
                                                            "PseudoRoles":null,
                                                            "ShadowItem":8,
                                                            "IsApp":false,
                                                            "IsDataItem":false,
                                                            "AppSettingsKind":"UserPreferences",
                                                            "IdentityKind":null,
                                                            "IsSystemTask":false,
                                                            "TaskCapabilities":null,
                                                            "ShowInUI":false,
                                                            "UIName":null,
                                                            "UIKind":null,
                                                            "UILoadKind":null,
                                                            "Children":
                                                            [
                                                            ]
                                                        },
                                                        {
                                                            "Id":16,
                                                            "ParentId":14,
                                                            "Name":"User",
                                                            "SingularName":null,
                                                            "Level":"data item",
                                                            "ClassName":"dataitem",
                                                            "UserRoles":null,
                                                            "StakeholderKind":null,
                                                            "IsSystemRole":false,
                                                            "IsPseudoRole":false,
                                                            "PseudoRoles":null,
                                                            "ShadowItem":7,
                                                            "IsApp":false,
                                                            "IsDataItem":false,
                                                            "AppSettingsKind":"ProfilePreferences",
                                                            "IdentityKind":null,
                                                            "IsSystemTask":false,
                                                            "TaskCapabilities":null,
                                                            "ShowInUI":false,
                                                            "UIName":null,
                                                            "UIKind":null,
                                                            "UILoadKind":null,
                                                            "Children":
                                                            [
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "Id":9,
                            "ParentId":4,
                            "Name":"contoso Administration",
                            "SingularName":null,
                            "Level":"responsibility",
                            "ClassName":"responsibility",
                            "UserRoles":null,
                            "StakeholderKind":null,
                            "IsSystemRole":false,
                            "IsPseudoRole":false,
                            "PseudoRoles":null,
                            "ShadowItem":0,
                            "IsApp":false,
                            "IsDataItem":false,
                            "AppSettingsKind":null,
                            "IdentityKind":null,
                            "IsSystemTask":false,
                            "TaskCapabilities":null,
                            "ShowInUI":true,
                            "UIName":null,
                            "UIKind":null,
                            "UILoadKind":null,
                            "Children":
                            [
                                {
                                    "Id":10,
                                    "ParentId":9,
                                    "Name":"contoso",
                                    "SingularName":null,
                                    "Level":"system",
                                    "ClassName":"system",
                                    "UserRoles":null,
                                    "StakeholderKind":null,
                                    "IsSystemRole":false,
                                    "IsPseudoRole":false,
                                    "PseudoRoles":null,
                                    "ShadowItem":8,
                                    "IsApp":false,
                                    "IsDataItem":true,
                                    "AppSettingsKind":"GlobalSettings",
                                    "IdentityKind":null,
                                    "IsSystemTask":false,
                                    "TaskCapabilities":null,
                                    "ShowInUI":true,
                                    "UIName":null,
                                    "UIKind":null,
                                    "UILoadKind":null,
                                    "Children":
                                    [
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "Id":8,
                    "ParentId":2,
                    "Name":"contoso",
                    "SingularName":null,
                    "Level":"system",
                    "ClassName":"system",
                    "UserRoles":null,
                    "StakeholderKind":null,
                    "IsSystemRole":false,
                    "IsPseudoRole":false,
                    "PseudoRoles":null,
                    "ShadowItem":0,
                    "IsApp":true,
                    "IsDataItem":false,
                    "AppSettingsKind":null,
                    "IdentityKind":null,
                    "IsSystemTask":false,
                    "TaskCapabilities":null,
                    "ShowInUI":false,
                    "UIName":null,
                    "UIKind":null,
                    "UILoadKind":null,
                    "Children":
                    [
                    ]
                }
            ]
        },
        {
            "Id":3,
            "ParentId":1,
            "Name":"User",
            "SingularName":null,
            "Level":"role",
            "ClassName":"role",
            "UserRoles":"User",
            "StakeholderKind":null,
            "IsSystemRole":true,
            "IsPseudoRole":true,
            "PseudoRoles":null,
            "ShadowItem":0,
            "IsApp":false,
            "IsDataItem":true,
            "AppSettingsKind":null,
            "IdentityKind":"Users",
            "IsSystemTask":false,
            "TaskCapabilities":null,
            "ShowInUI":true,
            "UIName":null,
            "UIKind":null,
            "UILoadKind":null,
            "Children":
            [
            ]
        },
        {
            "Id":11,
            "ParentId":1,
            "Name":"Stakeholders",
            "SingularName":null,
            "Level":"stakeholder",
            "ClassName":"stakeholder",
            "UserRoles":null,
            "StakeholderKind":"ExternalRoot",
            "IsSystemRole":false,
            "IsPseudoRole":false,
            "PseudoRoles":null,
            "ShadowItem":0,
            "IsApp":false,
            "IsDataItem":false,
            "AppSettingsKind":null,
            "IdentityKind":null,
            "IsSystemTask":false,
            "TaskCapabilities":null,
            "ShowInUI":false,
            "UIName":null,
            "UIKind":null,
            "UILoadKind":null,
            "Children":
            [
                {
                    "Id":12,
                    "ParentId":11,
                    "Name":"Customers",
                    "SingularName":null,
                    "Level":"stakeholder",
                    "ClassName":"stakeholder",
                    "UserRoles":null,
                    "StakeholderKind":"Customer",
                    "IsSystemRole":false,
                    "IsPseudoRole":false,
                    "PseudoRoles":null,
                    "ShadowItem":0,
                    "IsApp":false,
                    "IsDataItem":false,
                    "AppSettingsKind":null,
                    "IdentityKind":null,
                    "IsSystemTask":false,
                    "TaskCapabilities":null,
                    "ShowInUI":false,
                    "UIName":null,
                    "UIKind":null,
                    "UILoadKind":null,
                    "Children":
                    [
                    ]
                },
                {
                    "Id":13,
                    "ParentId":11,
                    "Name":"Suppliers",
                    "SingularName":null,
                    "Level":"stakeholder",
                    "ClassName":"stakeholder",
                    "UserRoles":null,
                    "StakeholderKind":"Supplier",
                    "IsSystemRole":false,
                    "IsPseudoRole":false,
                    "PseudoRoles":null,
                    "ShadowItem":0,
                    "IsApp":false,
                    "IsDataItem":false,
                    "AppSettingsKind":null,
                    "IdentityKind":null,
                    "IsSystemTask":false,
                    "TaskCapabilities":null,
                    "ShowInUI":false,
                    "UIName":null,
                    "UIKind":null,
                    "UILoadKind":null,
                    "Children":
                    [
                    ]
                }
            ]
        }
    ],
    "Id":1,
    "ParentId":0,
    "Name":"contoso Business Model",
    "SingularName":null,
    "Level":"business model",
    "ClassName":"businessmodel",
    "UserRoles":null,
    "StakeholderKind":null,
    "IsSystemRole":false,
    "IsPseudoRole":false,
    "PseudoRoles":null,
    "ShadowItem":0,
    "IsApp":false,
    "IsDataItem":false,
    "AppSettingsKind":null,
    "IdentityKind":null,
    "IsSystemTask":false,
    "TaskCapabilities":null,
    "ShowInUI":false,
    "UIName":null,
    "UIKind":null,
    "UILoadKind":null
}

© CloudIDEaaS, 1996-2022 • Updated: 10/02/20
Comment or report problem with topic