Code Monkey home page Code Monkey logo

bpsim's Introduction

Creative Commons License
This work by WfMC is licensed under a Creative Commons Attribution 3.0 Unported License.


#BPSim Version 2.0

BPSim Beta Version 2.0 is now available for feedback on http://www.bpsim.org.


#BPSim Version 1.0

BPSim Version 1.0 is now available on http://www.bpsim.org.


##WfMC Business Process Simulation Working Group (BPSWG)

###BPSWG Chair(s):

  • Denis Gagne
  • Robert Shapiro

###BPSWG Meta-model, Schema, Specification Document Editor(s):

  • Simon Ringuette
  • Denis Gagne

###Implementers' Guide

  • Alberto Manuel
  • Tim Stephenson
  • Denis Gagne

bpsim's People

Contributors

sringuette avatar dgagne avatar

Stargazers

Paul de Vrieze avatar Serge Volkov avatar  avatar  avatar Micha Roon avatar Gi H. Lee avatar Serge Stinckwich avatar Alvaro Jose Peralta Ocampo avatar

Watchers

 avatar  avatar James Cloos avatar Alvaro Jose Peralta Ocampo avatar  avatar Geoff Hook avatar

bpsim's Issues

Model Initialisation

Ability to initialise the model with Tokens pre-loaded into queues at activities

Results collection - time based

Simulation results are often required time dependent, for example number of jobs completed per hour.
A possible extension of V1 would be to allow a calendar to be attached to a result request, with an additional control parameter defining if the statistic should be reset.

For example an hourly recording of output could be either for each hour or cumulative by hour.

Warmup Period

A warm up period is considered important in most simulation software products. This allows the model to be run from empty for a period, results collection reset, then run on. This provides results based on periods when the system is 'primed', as is normal in industrial or business processes.

This would be a scenario parameter very similar to Duration.

Add a new ControlParameter for token arrivals over a calendar period

We have needed this functionality in a customer project.
Objective: set a number of arrivals to occur in a given time period. The current Trigger Count and Inter trigger time do not do this.
Solution: a new parameter that specifies the number of tokens to arrive over the duration of a calendar.

We added a vendor extension to achieve this which spreads the quantity of tokens randomly over the calendar duration
image

Our suggested implementation for BPSim is:
image

PropertyParameters - no way to specifying the type of Property

Currently there is no way to specify the type of Property (int, double, string etc.) used during property value assignment.

The Car Repair Process example that is part of the Implementers Guide, uses the following to assign a value to the "noOfIssues" property. The "noOfIssues" property is intended to be an integer count value. However the TruncatedNormalDistribution will return a double precision value between 1 and 1000, for example: 3.565534.

<bpsim:PropertyParameters>
  <bpsim:Property name="noOfIssues">
      <bpsim:TruncatedNormalDistribution max="1000" mean="2" min="1" standardDeviation="1"/>
   </bpsim:Property>
</bpsim:PropertyParameters>

The logic in the model decrements the "noOfIssues" each time an issue is repaired. Having fixed an issue, the number of issues now remaining is now 2.565534 (3.565534 - 1)

The gateway which decides if there are more issue to be fixed uses the logic getProperty('noOfIssues') = 0.

Clearly, unless we are very luck we will never reach exactly zero.

Here are some possible solutions:

  • Give a hint during property assignment as to what the expected expression type is e.g.
<bpsim:PropertyParameters>
  <bpsim:Property name="noOfIssues" **type="int"**>
      <bpsim:TruncatedNormalDistribution max="1000" mean="2" min="1" standardDeviation="1"/>
   </bpsim:Property>
</bpsim:PropertyParameters>

Possibly make this an optional attribute?

  • Declare somewhere in the <ScenarioParameters> or at the <ElementParameters> what the type of each property is.

Resource Selection extension

In many business processes the particular resource instance that is selected for a task must stay with that piece of work (token) through later steps. This named resourced could be stored as an attribute of the token and referred to in a subsequent resource selection expression.

This implementation could also be used to stop a particular resource being used at a later step to work on a token. This functionality is sometimes required to make sure a quality check is performed by a different resource instance to the one that did the work, even though they maybe both doing the same role.

Token Trace

We have found it useful to output a token trace from the simulation. This is useful for validation and deeper analysis. Due to the fact that this can slow down simulation execution and potentially create a very large output file this has been implemented selectively in a vendor extension at Task level
capture
.

Task Results Extension

V1 doesn't support sufficient parameters for holding results for a Task, e.g. both number started and number completed

capture

DMN

Consider using DMN Decision modelling notation

  • to create token attributes

Encoding error in the Car Repair Process

The car repair process does not contain valid xml

<bpsim:ElementParameters elementRef="_4799D2B0-A204-4A08-94ED-796C25D9AE57">
    <bpsim:ControlParameters>
        <bpsim:Condition>
            <bpsim:ExpressionParameter value="getProperty('noOfIssues') <= 0"/>
        </bpsim:Condition>
    </bpsim:ControlParameters>
</bpsim:ElementParameters>

Needs to be changed to

<bpsim:ElementParameters elementRef="_4799D2B0-A204-4A08-94ED-796C25D9AE57">
    <bpsim:ControlParameters>
        <bpsim:Condition>
            <bpsim:ExpressionParameter value="getProperty('noOfIssues') &lt;= 0"/>
        </bpsim:Condition>
    </bpsim:ControlParameters>
</bpsim:ElementParameters>

Reporting queue sizes at activities as "tokens waiting for resource"

Some sim/mod vendors with their own sim language show queue sizes as a proxy indicator for backlog. BPSim, to my knowledge, does not have this covered. When pressed with the need to report it for a client, Lanner & Trisotech gave me the vendor extension below to use, which was very helpful. I would like BPSim to address this need ASAP. The results set returned by this is the max, min, and mean of queue size as understood as # of tokens waiting for a resource.

                     <VendorExtension name="l-sim-task-results-v1">
                        ...
                        <lsim:MaximumNumberOfTokensWaitingForResource>
                            <ResultRequest>max</ResultRequest>
                        </lsim:MaximumNumberOfTokensWaitingForResource>
                        <lsim:MinimumNumberOfTokensWaitingForResource>
                            <ResultRequest>min</ResultRequest>
                        </lsim:MinimumNumberOfTokensWaitingForResource>
                        <lsim:AverageNumberOfTokensWaitingForResource>
                            <ResultRequest>mean</ResultRequest>
                        </lsim:AverageNumberOfTokensWaitingForResource>
                        <lsim:MaximumNumberOfResourcesUsed>
                            <ResultRequest>max</ResultRequest>
                        ...
                    </VendorExtension>

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.