Business Actors
Business Actor is a concept in the Archimate language, where is it described as A business actor represents a business entity that is capable of performing behavior..
The townplanner DSL has 4 different types of business actors, representing respectively a noun, like customer or employee, an individual like Bruce Wayne, or a team or organization:
val villain: Actor = ea has Actor(title = "Supervillain")
val bruceWayne: Person = ea has Person(title = "Bruce Wayne")
val justiceLeague: Team = ea has Team(title = "Justice League")
val leagueOfShadows: Organisation = ea has Organisation(title = "League of Shadows")
Properties
Description
A business actor can have 0 or more descriptions.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
he has Description("I'm Batman")
he has Description("Lost his parents at a young age and has become the masked vigilante because of that.")
...
}
Links
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he has Website("https://linkedin.com/brucewayne")
he has Wiki("https://dc.fandom.com/wiki/Batman_(Bruce_Wayne)")
...
}
External ID
An external ID is a reference to the description, documentation, implementation or anything else in some external system, for example in another EA tool, or in a cloud platform.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isIdentifiedAs "{42a5e9d4-188d-4509-8145-eaac65ab86b8}" on "Sparx EA"
...
}
SWOT
A business actor can have strengths, weaknesses, opportunities and threats.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he has Strength("he has lots of gadgets")
he has Strength("Alfred helps him a lot")
he has Weakness("He is a bit traumatized and unstable")
he has Threat(
"He seems to have a conflict with Superman, which is not the best idea in the world"
)
he has Opportunity(
"if he works together with the Justice League, he will be much stronger"
)
...
}
Relationships
Flow
A business actor can be both the source and the target of a flow relationship. A flow relationship can be defined on the elements on either side.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he uses systems.bcms
...
}
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he uses(systems.bcms, "uses to control batcave")
...
}
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isUsing systems.bcms and { that =>
that has Description("He likes to stare at the screens for a long time, trying to figure out what evil plans The Joker is up to.")
}
...
}
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isFlowingTo(systems.bcms, "uses to control batcave") and { that =>
that has Description("He likes to stare at the screens for a long time, trying to figure out what evil plans The Joker is up to.")
}
...
}
val bcms: ItSystem = ea describes ItSystem(title = "BatCave Management System") as { it =>
it isUsedBy actors.bruceWayne
}
val bcms: ItSystem = ea describes ItSystem(title = "BatCave Management System") as { it =>
it isBeingUsedBy actors.bruceWayne and { that =>
that has Description("Bruce likes to stare at this intensely")
}
}
Deliver
The delivery relationship indicates that a system, service, project, ... is delivered by a team, an organization or even an individual. A business actor can be the source of a delivery relationship.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he delivers systems.bcms
...
}
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isDelivering systems.bcms and { that =>
that has Description("Admittedly, he needed Lucius Fox")
}
...
}
val bcms: ItSystem = ea describes ItSystem(title = "BatCave Management System") as { it =>
it isBeingDeliveredBy actors.bruceWayne and { that =>
that has Description("Admittedly, he needed Lucius Fox")
}
}
val bcms: ItSystem = ea describes ItSystem(title = "BatCave Management System") as { it =>
it isDeliveredBy actors.bruceWayne
}
Influence
A business actor can influence decisions and projects, so a business actor can be the source of an influencing relationship.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he influences projects.cmsMigration
he influences(projects.pspImplementation, "he does not want any links with the underworld")
he influences decisions.cmsVendorSelection
...
}
val mayhem: ItProject = ea describes ItProject(title = "Project Mayhem") as { it =>
...
it isInfluencedBy actors.bruceWayne
...
}
Serve
A business actor can be the source of a serving relationship, typically used to assign the actor to an enterprise.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he serves enterprises.wayneCorp
...
}
Stakeholder
A business actor can be a stakeholder for projects and decisions.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he hasInterestIn projects.cmsMigration
he isStakeholderFor(projects.pspImplementation, "he does not want any links with the underworld")
...
}
RACI
The RACI model is a matrix that is for documenting the roles and responsibilities of people in a project or decision. The 4 letters stand for Responsible, Accountable, Consulted and Informed.
A business actor can be the source of any of these 4.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isResponsibleFor projects.cmsMigration
he isAccountableFor projects.pspImplementation
he isConsultedAbout decisions.cdpVendorSelection
decisions.allDecisions.forEach(decision => he isInformedAbout decision)
...
}
Note the last line, showing that the townplan is just Scala code, so you can use any Scala language construct to define the town plan, here demonstrated by a simple iteration over all decisions.
Composition
A business actor can be the source as well as the target of a composition relationship. This can be used to model the composition of delivery teams for example.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he isPartOf justiceLeague
...
}
Knowledge/Expertise
The knowledge relationship can indicate the level of knowledge an individual, team or organisation has about a platform, system, component or technology. This information can then be used to generate a knowledge matrix.
val bruceWayne: Person = ea describes Person(title = "Bruce Wayne") as { he =>
...
he knows(target=technologies.java, level = Expert)
he hasKnowledgeOf(target=technologies.typescript, level = Knowledgeable)
...
}
The levels of knowledge are NoKnowledge, Learner, Knowledgeable, HighlyKnowledgeable, Expert. The default level when the parameter is omitted is Knowledgeable.