Class FluentUsageModelFactory
Start creating a repository like this:
//create datatypes, components, interfaces etc. here .createUsageModelNow();FluentUsageModelFactory create = new FluentUsageModelFactory();
UsageModel usgModel = create.newUsageModel()
Refer to the project's Readme for an introduction and detailed examples.
-
Constructor Summary
ConstructorDescriptionCreates an instance of the FluentUsageModelFactory. -
Method Summary
Modifier and TypeMethodDescriptionaddSystem
(org.palladiosimulator.pcm.system.System system) Sets the System used in some objects of the usage model.org.palladiosimulator.pcm.core.composition.AssemblyContext
fetchOffAssemblyContextByName
(String systemName, String assemblyName) Extracts the assembly context referenced byname
from the system.fetchOffOperationRoleAndSignature
(String systemName, String operationProvidedRole, String operationSignature) Extracts the operation provided role referenced byoperationProvidedRole
from the system and the dependendoperationSignature
from the repository.Creates a new branch action.newBranchTransition
(ScenarioBehaviourCreator branchedBehaviour) Creates a new branch transition.newClosedWorkload
(String thinkTime) Creates a new closed workload.newDelayAction
(String timeSpecification) Creates a new delay action.newEntryLevelSystemCall
(OperationProvidedSignatureRole operationProvided) Creates a new entry level system call action.newLoopAction
(String iteration, ScenarioBehaviourCreator bodyBehaviour) Creates a new loop action.newOpenWorkload
(String interArrivalTime) Creates a new open workload.Creates a new scenario behaviour.Creates a new start action.Creates a new stop action.Creates a representation of the model object 'UsageModel'.newUsageScenario
(ScenarioBehaviourCreator scenarioBehavior, WorkloadCreator workload) Creates a new usage scenario.newUserData
(org.palladiosimulator.pcm.core.composition.AssemblyContext context) Creates a new user data creator.newVariableUsage
(String variableReference) Creates a new variable usage.newVariableUsage
(String namespaceReference, String... innerReferences) Creates a new variable usage.
-
Constructor Details
-
FluentUsageModelFactory
public FluentUsageModelFactory()Creates an instance of the FluentUsageModelFactory.
-
-
Method Details
-
addSystem
Sets the System used in some objects of the usage model.- Parameters:
system
-System
- Returns:
- FluentUsageModelFactory
- See Also:
-
System
-
newUsageModel
Creates a representation of the model object 'UsageModel'.The usageModel entity allows storing components, data types, and interfaces to be fetched and reused for construction of component instances as well as new component types.
- Returns:
- the
UsageModel
in the making - See Also:
-
UsageModel
-
newUsageScenario
public UsageScenarioCreator newUsageScenario(ScenarioBehaviourCreator scenarioBehavior, WorkloadCreator workload) Creates a new usage scenario.UsageScenarios are concurrently executed behaviours of users within one UsageModel. It describes which services are directly invoked by users in one specific use case and models the possible sequences of calling them. Each UsageScenario includes a workload and a scenario behaviour.
Usage scenarios are defined by their
name
- Parameters:
scenarioBehavior
-ScenarioBehaviourCreator
workload
-WorkloadCreator
- Returns:
- the usage scenario in the making
- See Also:
-
UsageScenario
-
newUserData
public UserDataCreator newUserData(org.palladiosimulator.pcm.core.composition.AssemblyContext context) Creates a new user data creator.A representation of the model object 'User Data'. UserData characterises data used in specific assembly contexts in the system. This data is the same for all UsageScenarios, i.e.,multiple users accessing the same components access the same data. This UserData refers to component parameters of the system publicized by the software architect (see pcm::parameters package). The domain expert characterises the values of component parameters related to business concepts (e.g., user specific data,data specific for a business domain), whereas the software architect characterises the values of component parameters related to technical concepts (e.g., size of caches, size of a thread pool, configuration data,etc.). One UserData instance includes all parameter characterisation for the annotated entity.
User Data offers the characteristics
name
andVariableUsage
and needs a mandatoryAssemblyContext
- Parameters:
context
-AssemblyContext
- Returns:
- the user data in the making
- See Also:
-
UserData
VariableUsage
AssemblyContext
-
newScenarioBehavior
Creates a new scenario behaviour.A representation of the model object 'Scenario Behaviour'. A ScenarioBehaviour specifies possible sequences of executing services provided by the system.It contains a set of AbstractUserActions, each referencing a predecessor and successor (except the first and last action), thereby forming a sequence of actions.See the AbstractAction documentation for why it is advantageous to model control flow in this way, as the same principle is used in the RDSEFF language.Concrete user actions of the usage model are:- Branch- Loop- EntryLevelSystemCall- Delay- Start- StopSo far, ScenarioBehaviours do not include forks in the user flow (i.e., splitting the flow with anAND semantic), as it is assumed that users always act sequentially.As there are no random variables depending on other variables in the usage model, there are no equivalent actions to GuardedBranchTransitions or CollectionIteratorActions.
Scenario Behaviour offers the characteristics
name
andactions
. The Actions are a chain ofactions
combined with an explicit start and end.- Returns:
- the scenario behaviour in the making
- See Also:
-
ScenarioBehaviour
AbstractUserAction
-
newBranchAction
Creates a new branch action.A representation of the model object 'Branch'. A Branch splits the user flow with a XOR-semantic: one of the included BranchTransitionsis taken depending on the specified branch probabilities. Each BranchTransition contains a nested ScenarioBehaviour, which a user executes once this branch transition is chosen. After execution of the complete nested ScenarioBehaviour, the next action in the user flow after theBranch is its successor action.A constraint ensures that all branchProbabilities of the included BranchTransitions sum up to 1.
A Branch offers the characteristics
name
,successor
andBranchTransitions
.- Returns:
- the branch action in the making
- See Also:
-
AbstractUserAction
Branch
BranchTransition
-
newBranchTransition
Creates a new branch transition.A representation of the model object 'Branch Transition'. The BranchTransition is an association class that realises the containment of ScenarioBehaviours in in the branches of a Branch action. It is a separate meta class because it has the additional attribute branchProbability that specifies how probably it is that the references ScenarioBehaviour is executed in the Branch action.See also Branch.
BranchTransition offers the characteristics
branched behaviour
,probability
and needs a mandatorybranchedBehaviour
- Parameters:
branchedBehaviour
-ScenarioBehaviourCreator
- Returns:
- the branch transition in the making
- See Also:
-
AbstractUserAction
BranchTransition
ScenarioBehaviour
-
newDelayAction
Creates a new delay action.A representation of the model object 'Delay'. A Delay represents a timing delay as a RandomVariable between two user actions. The Delay is included into the usage model to express that users do not call system services in direct successions,but usually need some time to determine their next action. User delays are for example useful,if a performance analyst wants to determine the execution time for a complete scenario behaviour(instead of a single service), which needs to include user delays.
Delay offers the characteristics
name
,successor
and needs a mandatory time specification.- Parameters:
timeSpecification
- String- Returns:
- the delay action in the making
- See Also:
-
AbstractUserAction
Delay
-
newEntryLevelSystemCall
public EntryLevelSystemCallCreator newEntryLevelSystemCall(OperationProvidedSignatureRole operationProvided) Creates a new entry level system call action. OperationProvidedSignatureRole is a class to function as structure for operation provided role and operation signature.A representation of the model object 'Entry Level System Call'. An EntryLevelSystemCall models the call to a service provided by a system. Therefore, anEntryLevelSystemCall references a ProvidedRole of a PCM System, from which the called interface and the providing component within the system can be derived, and a Signature specifying the called service. Notice, that the usage model does not permit the domain expert to model calls directly to components, but only to system roles. This decouples the System structure(i.e., the component-based software architecture model and its allocation) from the UsageModeland the software architect can change the System (e.g., include new components, remove existing components, or change their wiring or allocation) independently from the domain expert, if the system provided roles are not affected. EntryLevelSystemCalls may include a set of input parameter characterisations and a set of output parameter characterisations (as described in the pcm::parameters package). However, the random variables characterising the input parameters like NUMBER_OF_ELEMENTS can not depend on other variables in the usage model. They have to be composed from literals only including literals describing random variables having a certain fixed distribution.
Entry level system call offers the characteristics
name
,successor
,input parameter usage
,output parameter usage
and needs a mandatoryoperation provided role
and relatedoperation signature
.- Parameters:
OperationProvidedSignatureRole
- class as structure for operation provided role and operation signature- Returns:
- the entry level system call action in the making
- See Also:
-
AbstractUserAction
EntryLevelSystemCall
VariableUsage
OperationProvidedRole
OperationSignature
-
newLoopAction
Creates a new loop action.A representation of the model object 'Loop'. A Loop models a repeated sequence of actions in the user flow. It contains a nested ScenarioBehaviour specifying the loop body, and a RandomVariable specifying the number of iterations.
Loop offers the characteristics
name
,successor
, and needs a mandatory iteration andbody behaviour
.- Parameters:
body
- behaviourScenarioBehaviourCreator
iteration
- the iteration- Returns:
- the delay action in the making
- See Also:
-
AbstractUserAction
Loop
ScenarioBehaviour
-
newStartAction
Creates a new start action.A representation of the model object 'Start'. Each ScenarioBehaviour has exactly one Start action which marks the action where the control flows begins. Start actions have no predecessor.
- Returns:
- the start action in the making
- See Also:
-
AbstractUserAction
Start
-
newStopAction
Creates a new stop action.A representation of the model object 'Stop'. Each ScenarioBehaviour has exactly one Stop action which marks the action where the control flows ends. Stop actions have no successor.
Stop offers the characteristics
name
- Returns:
- the stop action in the making
- See Also:
-
AbstractUserAction
Stop
-
newClosedWorkload
Creates a new closed workload.A representation of the model object 'Closed Workload'. ClosedWorkload specifies directly the (constant) user population and a think time. It models that a fixed number of users execute their scenario, then wait (or think) for the specified amount of think time as a RandomVariable, and then reenter the system executing their scenario again.Performance analysts use closed workloads to model scenarios, where the number of users is known(e.g., a fixed number of users in a company).
Closed Workload offers the characteristics
population
, and needs a mandatory think time.- Parameters:
thinkTime
- String- Returns:
- the closed workload in the making
- See Also:
-
Workload
ClosedWorkload
-
newOpenWorkload
Creates a new open workload.A representation of the model object 'Open Workload'. OpenWorkload specifies usage intensity with an inter-arrival time (i.e., the time between two user arrivals at the system) as a RandomVariable with an arbitrary probability distribution. It models that an infinite stream of users arrives at a system. The users execute their scenario, and then leave the system. The user population (i.e., the number of users concurrently present in a system) is not fixed in an OpenWorkload.
Open Workload needs a mandatory inter-arrival time.
- Parameters:
interArrivalTime
- String- Returns:
- the open workload in the making
- See Also:
-
Workload
OpenWorkload
-
newVariableUsage
Creates a new variable usage.A representation of the model object 'Variable Usage'. Variable usages are used to characterise variables like input and output variables or component parameters. They contain the specification of the variable as VariableCharacterisation and also refer to the name of the characterised variable in its namedReference association. Note that it was an explicit design decision to refer to variable names instead of the actual variables (i.e., by refering to Parameter class). It eased the writing of transformations (DSolver as well as SimuCom) but put some complexity in the frontend for entering the variable usages.
Variable Usage offers the characteristics
name
, {@link org.palladiosimulator.generator.fluent.shared.components.VariableUsageCreator# withVariableCharacterisation(String,VariableCharacterisationType) variable characterisation} and needs a mandatory namespace reference and inner references.- Parameters:
namespaceReference
- StringinnerReferences
- String...- Returns:
- the variable usage in the making
- See Also:
-
VariableUsage
VariableCharacterisation
NamespaceReference
-
newVariableUsage
Creates a new variable usage.A representation of the model object 'Variable Usage'. Variable usages are used to characterise variables like input and output variables or component parameters. They contain the specification of the variable as VariableCharacterisation and also refer to the name of the characterised variable in its namedReference association. Note that it was an explicit design decision to refer to variable names instead of the actual variables (i.e., by referring to Parameter class). It eased the writing of transformations (DSolver as well as SimuCom) but put some complexity in the front end for entering the variable usages.
Variable Usage offers the characteristics
name
,variable characterisation
and needs a mandatory variable reference.- Parameters:
variableReference
- String- Returns:
- the variable usage in the making
- See Also:
-
VariableUsage
VariableCharacterisation
VariableReference
-
fetchOffAssemblyContextByName
public org.palladiosimulator.pcm.core.composition.AssemblyContext fetchOffAssemblyContextByName(String systemName, String assemblyName) Extracts the assembly context referenced byname
from the system.This method throws a FluentApiException if no parameter is present under the given
name
. If more than one parameter with thisname
is present, the org.palladiosimulator.generator.fluent.usagemodel chooses the first parameter it finds.- Parameters:
systemName
- name of the referenced systemassemblyName
- the name of the assembly context- Returns:
- the assembly context
- See Also:
-
AssemblyContext
-
fetchOffOperationRoleAndSignature
public OperationProvidedSignatureRole fetchOffOperationRoleAndSignature(String systemName, String operationProvidedRole, String operationSignature) Extracts the operation provided role referenced byoperationProvidedRole
from the system and the dependendoperationSignature
from the repository.This method throws a FluentApiException if no parameter is present under the given
operationProvidedRole
oroperationSignature
. If more than one parameter with the given Strings is present, the org.palladiosimulator.generator.fluent.usagemodel chooses each time the first parameter it finds.- Parameters:
systemName
- the name of the referenced systemoperationProvidedRole
- the name of the operation provided roleoperationSignature
- the name if the operation signature- Returns:
- Operation Provided Role & OperationSignature combined in one class
- See Also:
-
OperationSignature
OperationProvidedRole
OperationProvidedSignatureRole
-