Giter Club home page Giter Club logo

domain-story-modeler-thesis's Introduction

Deprecated

The contents of this project have been moved to the dqanalyzer component. This project is not maintained any longer.

Domain Story Modeler

A tool to visualize Domain Stories in your browser.

About

https://domainstorytelling.org

Run the Modeler

Important: Starting with v1.0.0, the modeler requires that your browser allows third party cookies (How to turn on third party cookies in Firefox and Chrome). We rely on storing your modeler's configuration in your browser. That enabled us to develop a cool feature that allows you to choose which icons you want to use for modeling (see below).

Usage

This is a short guide on how to use the Domain Story Modeler. We recommend to switch your browser to full screen mode (in most browsers: press F11 key) to increase the available modeling space.

Palette

Shows the icons you can choose to record your Domain Story (actors and work objects), a rectangular shape to group icons into logical units, and two useful modeling tools:

  • The lasso tool lets you select several icons at once to move them easily.
  • the space tool creates or removes space. Click and drag the crosshair to the right or down to create space, or drag to the left or to the top to remove space.

Headline

Click on the headline to change the name of the Domain Story and describe it. The description can contain information about assumptions (e.g. that the domain story describes a "happy path" scenario) and variations (e.g. optional activities). Use ctrl+enter or alt+enter to add line breaks to the description.

Context Menu

If you drop an icon from the palette into the canvas you will see a context menu with three sections:

  • Top section:
    • wrench icon: change to another the icon
    • bin icon: delete the icon
    • color-palette icon: change the color of the activity/work object
  • Middle section:
    • arrow icon: connect two icons with an activity.
    • annotation icon: add comments to an actor or work object
  • Bottom section: Instead of dragging icons from the palette, you can can choose the next icon from the context menu and an arrow will connect them automatically.

Naming Actors and Work Objects

Double click on an actor's or work object's icon to edit the name. To rename multiple work objects, click the dictionary button Dictionary Button.

Naming and Numbering of Activities

Activities are depicted as arrows. Double click on an arrow to edit the activity's name. If you model an activity between an actor (person, people and system) and a work object (folder, call, email, conversation, information) it will be numbered automatically. By double clicking on the arrow or the number you can manually change the number. All other numbers are adjusted automatically.

If you want to model activities that happen simultaneously, check the "multiple" checkbox of an activity. This allows you to use the same number multiple times, indicating that these activities happen in parallel. These steps are shown at once in the replay mode.

Save, Open, and Export Domain Stories

If you want to save your Domain Story, download it as a .dst file by clicking the export button Export Button or pressing ctrl+s on your keyboard. To continue working on a Domain Story, import a .dst file using the upload button Upload Button.

You can also export your diagram as a .svg, .png, or animated .html file by clicking on the image button SVG Button and selecting your preferred format. Beginning with version 1.2.0, the .svg file contains an embedded .dst file. That means that you only need to download one file that you can use as picture and also edit it later by importing it again. Exporting the domain story as animated HTML presentation is a beta feature introduced with v1.3.0.

Replay

The replay feature helps you to re-tell a Domain Story sentence by sentence. When you start a replay with the play button Play Button, all activities except the first one disappear. Clicking the forward button Forward Button shows the next activity and clicking the previous button Previous Button shows the previous one. The current sentence is highlighted. If a Domain Story contains groups, the are hidden an first and then appear as last step at the end of the story. Editing is disabled in replay mode, but you can zoom (ctrl + mouse wheel up and down), scroll up/down (mouse wheel up and down), and scroll left/right (shift + mouse wheel up and down). You can also move the modeling canvas by keeping the space bar pressed and move the mouse around. The stop the replay, click the stop button Stop Button.

Keyboard Shortcuts

Click on Keyboard Button to display all available keyboard shortcuts.

Configuring the icon set

We recommend that the icon set is adapted to the domain that you model. You can configure the palette accordingly and share that configuration:

Click on Gear Button to open the icon configuration. Configure your icon set by naming it, selecting which icons should be used as actors or as work objects and order these icons (using drag&drop). You can export your configuration as .domain file. To switch between configurations, import a different .domain file.

If you import a Domain Story from a .dst file, your icon configuration will change automatically to the one with which the Domain Story was created - even if you do not have the corresponding .domain file.

Beta feature: If you want to use icons that are not in the predefined set that comes with the modeler, you can upload your own icons. Different image formats are allowed, but you will achieve best results with SVG because it is scalable (like the icons that come with the modeler). Also, we recommend to use square images because they look better in the pallet and the context pad. If you want a consistent look, consider using the same icon set that we use for the predefined icons: https://material.io/resources/icons/?style=outline

Examples

You can download these examples and import them into the modeler.

For Developers

Download the source code or clone the repository. Please note that we use the main branch for development. The main branch contains the latest features and bug fixes, but they might be undocumented and tested less thoroughly than a release. To be on the safe side, stick with the latest release branch.

Fetch dependencies:

npm install

Build and open the modeler in your browser:

npm run dev

Create distributable bundle:

npm run all

License

The Domain Story Modeler is licensed under GPLv3.0. The Modeler uses bpmn-js which is licensed under the bpmn.io license.

GPLv3.0

Copyright (c) 2018-2021 WPS - Workplace Solutions GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

bpmn.io License

Copyright (c) 2014-present Camunda Services GmbH

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The source code responsible for displaying the bpmn.io project watermark that links back to https://bpmn.io as part of rendered diagrams MUST NOT be removed or changed. When this software is being used in a website or application, the watermark must stay fully visible and not visually overlapped by other elements.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

domain-story-modeler-thesis's People

Contributors

alexanderzellober avatar hofstef avatar hschwentner avatar haukestieler-wps avatar juliaschermann avatar cbecker-wps avatar nikeee avatar levinkerschberger avatar haninator avatar franksn90 avatar markkulammerz avatar nicklas2751 avatar indika-dev avatar tomraithel avatar

domain-story-modeler-thesis's Issues

[FEATURE] - Migrate repo to dq-components

Is your feature request related to a problem? Please describe.
This repo contains some parts of dq-components.

Describe the solution you'd like
Migrate this repo to its respective dq-component

[FEATURE] Create resilience verification scenario

Description

As a domain expert interested in resilience scenarios, I would like to create a resilience verification scenario that probes a service in my application as a means to verify if it correctly responds before and after a fault load is injected.

Acceptance Criteria

  • The probing scenario's endpoints match the selected services from the service failure template
  • The probing scenario's HTTP methods match the selected service from the service failure template
  • Additional data fields for HTTP body key-value pairs can be added by a "+" button
  • The data fields are marked as mandatory fields (*)

Create service failure resilience scenario

Description

As a domain expert interested in resilience scenarios, I would like to create a service failure scenario by selecting an application service by using a service identifier or selector to observe if my application is able to handle the shutdown gracefully.

Acceptance Criteria

  • There exists a data field for declaring a service identifier or selector
  • There exists a data field for random selection in case multiple services exists with the same selector
  • There exists a data field for describing the quantity of services that suffer from a shutdown
  • The template shows an error message if the mandatory fields are kept empty

[FEATURE] Create monitoring specification template

Description

As a domain expert interested in monitoring, I would like to create a monitoring specification template by dragging the monitoring specification icon onto the canvas to model a monitoring specification with regard to the observed domain story.

Acceptance Criteria

  • There exists an icon for monitoring specifications that can be dragged onto the domain story
  • Upon dropping the icon on a domain story, a new view is created for a monitoring specification
  • Upon dropping the icon on a domain story, a button is created that allows viewing the monitoring specification template
  • The view can be closed by clicking on the "close" button inside the view
  • The view shows a "close" button
  • The view shows a "save" button
  • The view contains the following data input fields:
    • entering a name for the monitoring specification
    • selecting a service from a list of existing services
    • selecting one HTTP endpoint as a measurement endpoint from a list of possible endpoints of the previously selected service
    • entering a time duration in hours:minutes as the observation period
    • entering a response time threshold in milliseconds

[FIX] Create a basic structure for JSON

Current Behavior:

Each template creates a new object. However, multiple tests are not yet summarized into one final object

Expected Behavior:

Multiple objects should be summarized in one JSON Structure.

[FEATURE] Create supporting information text

Description

As a domain expert interested in runtime quality analysis, I would like to have supporting information text on the data fields to understand what information I need to provide.

Acceptance Criteria

  • Each data field contains an information icon

  • On hovering the information icon, a supporting text is shown that explains the data field

[FEATURE] Create and show a result view

Description

As a domain expert interested in runtime quality analysis, I would like to open a view that shows the results from my runtime quality analysis tests so that I can inspect and interpret the results together with a technical expert.

Acceptance Criteria

  • When the system receives results, a button shows that can be clicked with the text 'results'

  • When the 'results' button is clicked, a separate modal view opens

  • The modal view contains an excerpt of the runtime quality analysis results

Define resilience scenario execution environment

Description

As a domain expert interested in resilience scenarios, I would like to define the environment in which the prototype executes the modeled resilience scenario.

Acceptance Criteria

  • There exists a data field to define the execution environment
  • The user may choose from two data fields as environments: (1) testing and (2) production
  • The template shows an error message if the execution environment field is kept empty

Define resilience response for resilience scenario template

Description

As a domain expert interested in resilience scenarios, I would like to describe the expected response from a service in case of a modeled application-type resilience scenario in order to verify that the service works as expected.

Acceptance Criteria

  • Data fields in the response object description can be added via a "+" button that creates new name/value (key/value) pairs on the template
  • The user can define an HTTP response status code in the template
  • The user may select from a selection of valid status codes in the template (200 – OK, 201 – Created, ... )
  • The data fields HTTP status code and HTTP response object are marked as mandatory fields (*)

[FEATURE] Color highlight of canvas element when test has been modeled

Description

As an domain expert interested in runtime quality analysis, I would like the elements on the canvas show a color highlight to differentiate them of elements I already created a test for.

Acceptance Criteria

  • When a specification or test has been saved, the respective element is highlighted with a colored border

[FEATURE] Import a Mapping of a Domain Story

Description

As a domain expert, I would like to import a mapping specification of my current domain story to allow precise modeling of runtime quality analysis tests and results representation.

Acceptance Criteria

  • The user can import a mapping specification via an "import mapping" button

[FEATURE] Move the confirmationModal to the generate and push button

Currently the confirmation modal is implemented and binded to the resilience template save button which is the old behavior.

Expected: When the generate and push button is pressed by the user, the summary view should be opened and shown to the user where he confirms that all information is correct and that he wishes to push the object to the message-queue (or equalizer backend)

[BUG] Creating another loadtest is not working

Current behavior:
Upon attempting to create another load test on a separate activity/actor/work object, the modal opens showing only the header and ruler element but no other input elements (see screenshot).
Bildschirmfoto 2022-09-26 um 21.03.36.png

Expected behavior:
The modal opens showing the header, ruler element and the other input elements respective to a load test.

Define resilience type for resilience scenario template

Description

As a domain expert interested in resilience scenarios, I would like to specify the type of resilience scenario to know which services and resources will be affected by my modeled scenario.

Acceptance Criteria

  • there exists a data field for resilience scenario types
  • the user may choose from two inputs: (1) application and (2) infrastructure

[FEATURE] Create summary view for resilience templates

Description

As a domain expert interested in resilience testing, I would like to open a summary view that shows my currently modeled resilience scenarios so that I can verify the models before generating the scenarios.

Acceptance Criteria

  • When the user saves a resilience template, a summary view is created

  • The summary view can be opened by clicking a button that is labeled as 'resilience scenarios'

  • The summary view holds all information from all currently modeled resilience scenarios on the canvas

[FEATURE]  Delete resilience scenario if Icon is removed from domain story

Description

As a domain expert interested in resilience scenarios, I would like that the prototype removes the context view for resilience scenarios that is specific to a resilience scenario ID in case I remove the resilience scenario from the domain story canvas

Acceptance Criteria

  •  Context modal view is remove when resilience scenario icon is removed from domain story canvas

[FEATURE] Create loadtest summary view

Description

As a domain expert interested in loadtesting, I would like to open a summary view that shows my currently modeled loadtest specifications so that I can verify the models before generating the tests.

Acceptance Criteria

  • When the user saves a loadtest specification a summary view is created

  • The summary view can be opened by clicking a button that is labeled as 'loadtest specifications

  • The summary view holds all information from all currently modeled loadtest specifications on the canvas

[FEATURE] Non-randomized selection of failing service instances

Description

As a domain expert interested in runtime quality analysis, I would like to select the service ID of a service instance if multiple service instances are available for one particular service to freely decide which service will fail during a resilience scenario.

Acceptance Criteria

  • By default, the randomized selection has a value of 'yes' (shown as an info text on the label)

  • The service instance ID list is by default disabled

  • If the user selects no, then the disabled attribute is removed from the selection

  • The user can select one service ID if the value for randomization is 'no'

  • The resilience template contains a data checkbox with the value 'no' that can be clicked

  • Depending on the value of randomization, the list of service IDs is disabled or active

    • Disabled, if randomized

    • Active, if not randomized

[FEATURE] Create a mapping between Domain Story and Architecture

Description

As a domain expert and technical expert, I would like to create a mapping between the current domain story and the application's architecture to enable runtime quality analysis modeling on the domain level

Acceptance Criteria

  • The users can open a view via a "+" button that represents a new mapping

  • After adding a new mapping, the view can be opened via a "open mapping" button

  • The mapping input fields can be saved via a "saved" button

  • The mapping view can be closed via a "close" button

  • The mapping view lists data input fields mandatory to create a mapping

  • The system notifies the user if mandatory information is missing

  • The mapping can be generated and sent to an dqualizer interface via a "generate" button

Requirements list for frontend modeling evaluation based on problems with Domain-Story-Modeler

Background

For modeling the runtime quality analysis questions (Laufzeitqualitätsanalyse Fragestellung), we'd like to use an adapted version of Domain Storytelling.

In this ticket, different frontend libraries/frameworks for modeling business processes/domain stories with our particular needs should be evaluated.

Task List

  1. What are domain stories? Get familiar with domain storytelling.
  2. Model / draft your own domain story.
  3. Become familiar with Domain-Story-Modeler
  4. Look out / search for Libraries / Framework that allow modeling of domain stories similar to domain-story-modeler, see bpmn.io
    • It should be possible to create additional / custom annotations (e.g., load test, resilience test, monitoring) which can be connected to nodes (work objects and actors) and activities

Create resilience scenario template

Description

As a domain expert interested in resilience scenarios, I would like to create a resilience scenario template by dragging the resilience scenario icon onto the canvas to model a resilience scenario with regard to the observed domain story.

Acceptance Criteria

  • There exists an icon for resilience scenarios that can be dragged onto the domain story
  • Upon dropping the icon on a domain story, a new view is created for a resilience scenario
  • Upon dropping the icon on a domain story, a button is created that allows viewing the resilience scenario template
  • The view can be closed by clicking on the "close" button inside the view
  • The view shows a "close" button
  • The view shows a "save" button
  • The view contains the following data input fields:
    • entering a name for the resilience scenario
    • selecting a fault type for the resilience scenario from a list of two fault types (service failure, service delay)
    • selecting an injection level for the resilience scenario from a list of abstraction levels (application, infrastructure)
    • entering a start time
    • selecting an environment for the resilience scenario from a list of environments (production, testing, staging)

[FEATURE] List of available http endpoints for load test template

Description

As a domain expert interested in runtime quality analysis, I would like to receive a pre-determined list of available HTTP endpoints (measure points) that I can select for the load test in order to limit my decision to reasonable targets.

Acceptance Criteria

  • List of pre-determined HTTP endpoints is provided by Mapping object

  • Selection only shows available HTTP endpoints

[FEATURE] Save load test template information into load test template object

Description

As a domain expert interested in runtime quality analysis, I would like to save my inputs to change them later on or to generate the final object when I am done with modeling.

Acceptance Criteria

  • Mandatory fields must be selected or filled out with information

  • User receives a notification if mandatory information is missing

  • If a loadtest template is saved and the 'generate' button is still disabled, it becomes active

Create resilience scenario template object from a modeled resilience scenario template

Description

As a domain expert interested in resilience scenarios, I would like to generate a resilience scenario template object from a previously modeled resilience scenario template that I can provide to dqualizer in order to run the resilience scenario according to my specifications.

Acceptance Criteria

  • There exists a "Generate" button in the resilience scenario template
  • The system asks if I really want to generate the resilience scenario template object when clicking on the "Generate" button
  • The system checks the content of the resilience scenario template on completeness before attempting to create the object
  • Confirming the generation closes the confirmation modal and retrieves the persisted template object from memory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.