Coder Social home page Coder Social logo

bpmn2stamp's People

Contributors

blcham avatar dependabot[bot] avatar grigobog avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

bpmn2stamp's Issues

We should generate default file names same as ontology IRI fragment

Calling:

bpmn2stamp.sh --baseIri http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist --input-bpmn-file bpmn/dozor-nad-provozovateli-letist.bpmn --input-org-structure-file ./organization-structure/dozor-nad-provozovateli-letist--organization-structure.xml --input-actor-mapping-file ./actor-mapping/dozor-nad-provozovateli-letist/_5hfEoGOxEeqMGrfQf_dPDA.xml

Generates ontology:

http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn/

but into file:
dozor-nad-provozovateli-letist-bbo.ttl

I suggest making default same as ontology IRI, i.e.:
dozor-nad-provozovateli-letist-bbo.ttl --> dozor-nad-provozovateli-letist-bpmn.ttl

Make dozor-nad-provozovateli-letist transformation idempotent

Try to make the transformation of BPMN diagrams dozor-nad-provozovateli-letist as idempotent as possible, if some parts are not possible to transform, let's discuss it here.

Related issue: #8

To test the transformation do the following:

git clone https://github.com/kbss-cvut/bpmn2stamp
git clone https://github.com/kbss-cvut/bpmn-convertor-examples
cd bpmn-convertor-examples/processes/ucl
./bin/extract-bos.sh bos/dozor-nad-provozovateli-letist.bos
../../bin/build-bpmn2stamp.sh
./bin/process-bpmn.sh bpmn/dozor-nad-provozovateli-letist.bpmn
git diff dozor-nad-provozovateli-letist-bpmn.ttl

With these steps, you should get the following output of git diff dozor-nad-provozovateli-letist-bpmn.ttl:
image

A/C:

  • the transformation is idempotent or we defined where are issues when we update diagram (described in this issue)
  • make sure that actor-mapping is also transformed (i.e. mapping of actors to organization structure)

Prepare test for the specific case of label values in ontology

Prepare test (as much isolated, as possible), which verifies if ontology with colon in label is saved correctly:

  • save element with colon in label to .ttl file
  • check if output contains valid label value

Example of the wrong outputs:

:_cbbzacs-eeuieoma0y64yw a owl:NamedIndividual, bbo:UserTask;
rdfs:label <Uvedení:%20N/R%20-%20not%20reviewed> .

:_dtq28cs-eeuieoma0y64yw a owl:NamedIndividual, bbo:UserTask;
rdfs:label <Uvedení:%20N/A%20-%20not%20applicable> .

Output elements contanis invalid value in rdfs:label, since they are enclosed in "<", ">" instead of quotes.

CLI help should not generate logger metainfo

We should not generate [main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner - part of lines when using --help:

.../bpmn-convertor-examples/experiments/jednani-sag-timer-test$ ../../bin/bpmn2stamp.sh --help
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner - SYNOPSIS
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner -     bpmn2stamp -iri BASE_IRI -ibpmn BPMN_FILE -iam ACTOR_MAPPING_FILE... -iorg ORG_STRUCTURE_FILE -obbo OUTPUT_BBO_FILE -ostamp OUTPUT_STAMP_FILE
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner -     bpmn2stamp -t stamp -iri BASE_IRI -ibpmn BPMN_FILE -iam ACTOR_MAPPING_FILE... -iorg ORG_STRUCTURE_FILE -out OUTPUT_FILE
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner -     bpmn2stamp -t bbo -iri BASE_IRI -ibpmn BPMN_FILE -iam ACTOR_MAPPING_FILE... -iorg ORG_STRUCTURE_FILE -out OUTPUT_FILE
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner -     bpmn2stamp -t stampFromBbo -iri BASE_IRI -ibbo BBO_FILE -out OUTPUT_STAMP_FILE
[main] INFO cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner - 

Make conversion idempotent

Currently, the conversion is idempotent only w.r.t. entities that have IDs from Bonita. We need to make it idempotent w.r.t. all entites.
Related issue: #8

Conversion of Dozor bpmn throws validation error

I believe I have the newest version of the bpmn2stamp converter:

..bpmn-convertor-examples$ md5sum .target/bpmn2stamp.jar 
812aa0cf100edf3d22d3059f92720bec  .target/bpmn2stamp.jar

But when running:
..bpmn-convertor-examples/processes/ucl$ ./bin/process-bpmn.sh ./bpmn/dozor-nad-provozovateli-letist.bpmn

It throws error:

[main] INFO ConverterMappingService - Actor mapping file _wW8TAFviEeqIT4J6BYWACw.xml was parsed as a normal mapping file
[main] ERROR RdfRepositoryWriter - Could not save ontology, rollback...
[main] ERROR RdfRepositoryWriter - Constraints violation error: At least 1 values of attribute SequenceFlow.has_targetRef expected in instance http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn/_qteqkhhreeqzdqdldgvjca, but got only 0
Exception in thread "main" cz.cvut.kbss.jopa.exceptions.RollbackException: cz.cvut.kbss.jopa.exceptions.CardinalityConstraintViolatedException: At least 1 values of attribute SequenceFlow.has_targetRef expected in instance http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn/_qteqkhhreeqzdqdldgvjca, but got only 0
        at cz.cvut.kbss.jopa.transactions.EntityTransactionImpl.commit(EntityTransactionImpl.java:60)
        at cz.cvut.kbss.bpmn2stamp.converter.persistance.RdfRepositoryWriter.write(RdfRepositoryWriter.java:82)
        at cz.cvut.kbss.bpmn2stamp.console.Bpmn2StampConverterService.saveToRdf(Bpmn2StampConverterService.java:116)
        at cz.cvut.kbss.bpmn2stamp.console.Bpmn2StampConverterService.saveToRdf(Bpmn2StampConverterService.java:120)
        at cz.cvut.kbss.bpmn2stamp.console.Bpmn2StampConverterService.convertToBbo(Bpmn2StampConverterService.java:38)
        at cz.cvut.kbss.bpmn2stamp.console.Bpmn2StampConverterService.doConversionWithUsingReasoner(Bpmn2StampConverterService.java:87)
        at cz.cvut.kbss.bpmn2stamp.console.Bpmn2StampConverterService.convertToStampAndBbo(Bpmn2StampConverterService.java:67)
        at cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner.run(ConsoleRunner.java:104)
        at cz.cvut.kbss.bpmn2stamp.console.ConsoleRunner.main(ConsoleRunner.java:67)
Caused by: cz.cvut.kbss.jopa.exceptions.CardinalityConstraintViolatedException: At least 1 values of attribute SequenceFlow.has_targetRef expected in instance http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn/_qteqkhhreeqzdqdldgvjca, but got only 0
        at cz.cvut.kbss.jopa.sessions.validator.CardinalityConstraintsValidator.validateParticipationConstraint(CardinalityConstraintsValidator.java:89)
        at cz.cvut.kbss.jopa.sessions.validator.CardinalityConstraintsValidator.validate(CardinalityConstraintsValidator.java:66)
        at cz.cvut.kbss.jopa.sessions.validator.GeneralIntegrityConstraintsValidator.validate(GeneralIntegrityConstraintsValidator.java:33)
        at cz.cvut.kbss.jopa.sessions.validator.IntegrityConstraintsValidator.lambda$validate$2(IntegrityConstraintsValidator.java:62)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1621)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at cz.cvut.kbss.jopa.sessions.validator.IntegrityConstraintsValidator.validate(IntegrityConstraintsValidator.java:60)
        at cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl.validateIntegrityConstraints(UnitOfWorkImpl.java:351)
        at cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl.commitToOntology(UnitOfWorkImpl.java:344)
        at cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl.commitUnitOfWork(UnitOfWorkImpl.java:314)
        at cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl.commit(UnitOfWorkImpl.java:296)
        at cz.cvut.kbss.jopa.transactions.EntityTransactionImpl.commit(EntityTransactionImpl.java:57)
        ... 8 more

Support conversion of bbo and stamp at same time

Currently, we can convert bpmn exclusively only to bbo or stamp. We would like to be able to do same.

Suggested CLI params:
--output-stamp-file / -ostamp $FILE
--output-bbo-file / -obbo $FILE
--output-file -- this could be used only if only one transformation bbo | stamp is used

All of the above CLI params should be optional as there should be a convention how the output file names are generated from input file names. Suggested output file names could be:

  • for stamp: ${bmpn_file}-prestamp.ttl
  • for bbo: ${bmpn_file}-bbo.ttl

Add synopsis to CLI

See for example linux man cp:

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

Duplicated entities from imported ontologies

There is an issue during saving instances with object properties referencing other instances from imported ontology. The referenced instances are persisted in the new ontology (with set cascade=PERSIST on has_role_part, otherwise error occurs).
E.g. ontology with id http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-bpmn has individuals with type model.bbo.model,Role with has_role_part object property referencing to another ontology (http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-organization-structure).
Steps to reproduce:

  1. mvn clean
  2. mvn package
  3. mvn aspectj-maven-plugin:1.12.6:compile
  4. run BpmnReaderServiceTest#mapAndWriteTest which should pass, but jednani-sag-bpmn.ttl contains duplicted referenced individuals from imported ontology (e.g. http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-organization-structure/ředitel_sekce).
    Expected jednani-sag-bpmn.ttl contains no individuals from imported ontology (or at least containing only references).

Processing system-sledovani-shody-a-interni-audit fails due null pointer exception

Command:

cd bpmn-convertor-examples/processes/ucl
./bin/process-bpmn.sh bpmn/system-sledovani-shody-a-interni-audit.bpmn

Returns error:

Converting BBO file 'system-sledovani-shody-a-interni-audit-bpmn.ttl' to STAMP file 'system-sledovani-shody-a-interni-audit-pre-stamp.ttl'
Exception in thread "main" java.lang.NullPointerException: uri cannot be null
        at org.semanticweb.owlapi.util.OWLAPIPreconditions.checkNotNull(OWLAPIPreconditions.java:102)
        at org.semanticweb.owlapi.model.IRI.create(IRI.java:150)

Full log:
system-sledovani-shody-a-interni-audit.log

Change output-file parameter to output-file-prefix

We would like to call this:
../../bin/bpmn2stamp.sh ... --output-file-prefix dozor-nad-provozovateli-letist

as an alternative for this call:
../../bin/bpmn2stamp.sh .... --output-bbo-file dozor-nad-provozovateli-letist-bpmn.ttl --output-stamp-file dozor-nad-provozovateli-letist-pre-stamp.ttl

Fix collision of entities in organization structure

IDs of entities from organization structures are taken from the name attribute of XML file, e.g.

    <group name="Auditovaná organizace">
      <displayName>Auditovaná organizace</displayName>
    </group>
...
    <role name="Auditovaná organizace">
      <displayName>Auditovaná organizace</displayName>
    </role>

Currently, it generates the following triples:

###  http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-organization-structure/auditovaná_organizace_group
<http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-organization-structure/auditovaná_organizace_group> rdf:type stamp:structure ;
                                                                                                                                     rdfs:label "Auditovaná organizace" .


###  http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-organization-structure/auditovaná_organizace_role
<http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-organization-structure/auditovaná_organizace_role> rdf:type stamp:structure-component ;
                                                                                                                                    rdfs:label "Auditovaná organizace" .

Note, the algorithm just suffixes to the name either _group or _role.

Parameter --output-files-prefix should be possible to override by --output-bbo-file

When running :

bpmn2stamp.sh --baseIri http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist --input-bpmn-file bpmn/dozor-nad-provozovateli-letist.bpmn --input-org-structure-file ./organization-structure/dozor-nad-provozovateli-letist--organization-structure.xml --input-actor-mapping-file ./actor-mapping/dozor-nad-provozovateli-letist/_5hfEoGOxEeqMGrfQf_dPDA.xml --output-files-prefix dozor-nad-provozovateli-letist --output-bbo-file dozor-nad-provozovateli-letist-bpmn.ttl

It gives me error:

Both arguments -obbo(--output-bbo-file) and -ostamp(--output-stamp-file) required. Alternatively use argument -oprefix(--output-files-prefix)
For help use argument -h or --help

I suggest that arguments:
--output-files-prefix dozor-nad-provozovateli-letist --output-bbo-file dozor-nad-provozovateli-letist-bpmn.ttl

can work together where --output-bbo-file is the one that takes precedence over --output-files-prefix dozor-nad-provozovateli-letist.

Processing manual-ramp-inspektora fails due null pointer exception

Command:

cd bpmn-convertor-examples/processes/ucl
./bin/process-bpmn.sh bpmn/manual-ramp-inspektora.bpmn

Returns error:

Converting BBO file 'manual-ramp-inspektora-bpmn.ttl' to STAMP file 'manual-ramp-inspektora-pre-stamp.ttl' 
Exception in thread "main" java.lang.NullPointerException 
       at cz.cvut.kbss.bpmn2stamp.converter.mapper.bbo2stamp.MapstructBbo2StampMapper.lambda$processControlledProcessProperties$0(MapstructBbo2StampMapper.java:56) 
       at cz.cvut.kbss.bpmn2stamp.converter.mapper.bpmn2bbo.MapstructBpmn2BboMapper$AfterMappingAction.lambda$new$0(MapstructBpmn2BboMapper.java:419) 

Full log:
manual-ramp-inspektora.log

Processing dozor-nad-organizacemi-amo-a-camo fails due cardinality constraint violation

Command:

cd bpmn-convertor-examples/processes/ucl
./bin/process-bpmn.sh bpmn/dozor-nad-organizacemi-amo-a-camo.bpmn

Returns error:

Exception in thread "main" cz.cvut.kbss.jopa.exceptions.RollbackException: cz.cvut.kbss.jopa.exceptions.CardinalityConstraintViolatedException: At most 1 values of attribute Event.has_eventDefinition expected in instance http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-organizacemi-amo-a-camo-bpmn/_ae3nqbnqeeucdnjkrxq4aw, but got 2

Full log: dozor-nad-organizacemi-amo-a-camo.log

Analyse possible conflict in groups

It is possible to model the following groups in Bonita:

UCL
  Sekce provozni
    Administrace sekce
  Sekce PR
    Administrace sekce

Thus we might create an invalid output ontology based on an algorithm described here:
#35

Generate help from CLI

When script is run without parameters or with bad parameters or with --help, information about parameters should be shown. It should return similar input as following bash script:

if [ $# -lt 4 ];
then
        echo "ERROR: all 4 parameters should be passed";

        echo "Usage: bpmn2stamp.sh <bpmn_file> <actor_mapping_xml> <organization_structure_xml> <result_ontology_base_iri>"
        echo "where:"
        echo "  bpmn_file - bpmn file to convert"
        echo "  actor_mapping_xml - actor mapping file for bpmn processes"
        echo "  organization_structure_xml - organization structure file"
        echo "  result_ontology_base_iri - base iri for the output ontology"

        exit 1;
fi;

echo "Passed parameters:"
echo "  bpmn_file = "$bpmn_file
echo "  actor_mapping_xml = "$actor_mapping
echo "  organization_structure_xml = "$organization_structure
echo "  result_ontology_base_iri = "$base_iri
echo "  output ontology file name (automatically derived from bpmn_xml) = "$output_file

echo ""
echo "Executing bpmn2stamp converter (using stamp execution stamp - see converter documentation):"
echo "-------------------------------------------------------------------------------------------------------"
echo "java -jar bpmn2stamp.jar -t stamp -iam \"$actor_mapping\" -ibpmn \"$bpmn_file\" -iorg \"$organization_structure\" -iri \"$base_iri\" -o \"$output_file\""

A/C:

  • generated help is outputted to the console if CLI is incorrectly used

Fix creation of pre-releases

A/C:

  • fix or justify why date of release is not updated
  • sources are updated with same date as main jar artefacts

image

Processing okamzita-reakce-na-bezpecnostni-problem fails due to missing file

Command:

cd bpmn-convertor-examples/processes/ucl
./bin/process-bpmn.sh bpmn/okamzita-reakce-na-bezpecnostni-problem.bpmn

Returns error:

2023-04-06 23:19:06,331 [,,] [main] ERROR ConverterOntologyFileReader - Input file validation failed.
java.io.IOException: File /home/blcha/projects/20doprava-ucl/git/bpmn-convertor-examples/processes/ucl/./organization-structure/okamzita-reakce-na-bezpecnostni-problem--organization-structure.xml doesn't exist
        at cz.cvut.kbss.bpmn2stamp.converter.service.ConverterOntologyFileReader.validateFile(ConverterOntologyFileReader.java:90)
        at cz.cvut.kbss.bpmn2stamp.converter.service.ConverterOntologyFileReader.readFromXml(ConverterOntologyFileReader.java:55)

Full log:
okamzita-reakce-na-bezpecnostni-problem.log

Automate package build

Should be done using github actions.

A/C:

  • package version should be based on version of package in maven
  • for now it is sufficient to replace when version of the package does not change

Change info of CLI

Current state

-- type of the conversion. Possible values are:
                        null,bbo,stamp,stampFromBbo. Type none (null) is
                        used by default if no argument was passed and will
                        generate both Bbo and Stamp files.

New state:

  • instead of null we should just say what is default and that --type is optional.

Fix logging

Currently generating:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/home/blcha/projects/20doprava-ucl/git/bpmn-convertor-examples/.target/bpmn2stamp.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
/tmp/mapping-tmp-16378272493106498894.map
/home/blcha/projects/20doprava-ucl/git/bpmn-convertor-examples/processes/ucl/dozor-nad-provozovateli-letist-bbo.ttl
http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn
file:/home/blcha/projects/20doprava-ucl/git/bpmn-convertor-examples/processes/ucl/dozor-nad-provozovateli-letist-bbo.ttl
http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn
/tmp/mapping-tmp-16483033631579641637.map
/home/blcha/projects/20doprava-ucl/git/bpmn-convertor-examples/processes/ucl/dozor-nad-provozovateli-letist-bbo.ttl
http://onto.fel.cvut.cz/ontologies/processes/ucl/dozor-nad-provozovateli-letist-bpmn

A/C:

  • logs should make sense and should have a level (debug/info)
  • we should understand what happened (all files created should be mentioned)

Design idempotent conversion

Current state:

  • entities that have Bonita ID are idempotent

Related issue: #23
Current issues:

  • within entities where bonita does not have an ID we are generating it. As an se generated bbo ontology in experiments/jednani-sag-timer-test:
###  http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-timer-test-bpmn/bf085bf0-aabe-4e4c-8299-beafeb3b1b89
:bf085bf0-aabe-4e4c-8299-beafeb3b1b89 rdf:type owl:NamedIndividual ,
                                               <http://BPMNbasedOntology#TimeExpression> ;
                                      <http://BPMNbasedOntology#value> "PT168H" .


###  http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-timer-test-bpmn/eventdef-do_7_dnu
:eventdef-do_7_dnu rdf:type owl:NamedIndividual ,
                            <http://BPMNbasedOntology#TimerEventDefinition> ;
                   <http://BPMNbasedOntology#has_timeCycle> :bf085bf0-aabe-4e4c-8299-beafeb3b1b89 .

image

Support conf files extracted from bos files

  • we found out that exported actor mappings are different from the ones that are in .bos archive
  • within command line we should support both actor mapping formats
  • the format should be automatically detected (either from the content or from the file extension)

Add prefixes to conversion

Output of CLI transformations should use prefixes:

bbo: <http://BPMNbasedOntology#>
stamp: <http://onto.fel.cvut.cz/ontologies/stamp/>

Create diagram showing how converter maps BPMN elements to STAMP

  • links: [1] Master thesis (most-likely 4.3.1.1 Organization structure to BBO mapping)

  • Final goal here is to provide documentation of the converter, where we want to be able to see what parts of STAMP structure are mapped.

Steps:

  • create diagram with BPMN schema (=BBO -- mark with different color our BBO concepts) and STAMP schema and mappings from [1]
  • extend relevant STAMP schema/BPMN schema

Bad IRI of pre-stamp ontology

When I use following command:

../bin/bpmn2stamp.sh  x/Zpracovаnб\ informacб\ o\ bezpeЯnosti\ -\ 1.0.bpmn  x/Jednani-sag-actor-mapping.xml ./x/ucl-zpracovani-informaci-o-bezpecnosti.xml 'http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag

It generates ontology with following triple:

<http://onto.fel.cvut.cz/ontologies/ucl/example/jednani-sag-bpmn> rdf:type owl:Ontology ;

This is incorrect at it should not end with jednani-sag-bpmn.

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.