Uploaded image for project: 'OptaPlanner'
  1. OptaPlanner
  2. PLANNER-707

Workbench "import example dialog": Embed stock example repositories

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Critical Critical
    • 7.0.0.Beta7
    • None
    • optaplanner-wb
    • None
    • NEW
    • NEW

      To improve the "import example" experience for all workbenches,
      we intend to unify the playground repositories.

      This will solve these issues:

      • Versioning: allow mortgages example to use a 7.1 screen without breaking every 7.0 or 6.3 in production
      • Build playground during a release: to avoid shipping broken examples
      • Allow for offline demo's: SA's often have no network connection at customer/airport
      • Make it easier to skim through all BRMS and BPMS suite stock examples (builds on top of blank experience)

      How?

      We intend to:
      1) Unify (including history) all playground repositories into
      https://github.com/droolsjbpm/kie-wb-playground
      We'll start with just optacloud and mortgages.
      Once that works well, we'll also move the others.

      2) Add a pom.xml to build it and wraps the entire .git repo
      as a jar resource into a subdir of kie-wb-playground-7.0.0-SNAPSHOT.jar

      3) Change the "import example" dialog to allow loading the stock examples:

      4) Make kie-wb-webapp depends on kie-wb-playground,
      so it can load the playground .git repository from an embedded jar resource.
      This works offline (including in intranets without internet access).
      This uses the correct, released version (so no longer the latest unstable sources).
      This will increase the 127MB .war file by a few MB, around 5%.

      5) Similar for drools-wb-webapp, optaplanner-wb-webapp, etc,
      but filter out examples that don't work in those subset workbenches,
      (based on a tag or category on each example).

      Technical details

      The playground directory structure will change little,
      we will only add a pom.xml file:
      
      droolsjbpm/kie-wb-playground (= unification of playground stock examples)
          pom.xml // new
              // Builds mortgages/pom.xml, optacloud/pom.xml, ...
              // Copy this git repo (including .git)
              // into kie-wb-playground-7.0.0-SNAPSHOT.jar!org/kie/wb/playground as resource
              // excluding target directory, local directory, etc of course
              // includes .java files in jar (so not the .class files of it)
          README.md
          categories.xml // WB import examples scans for this file IIRC
          mortgages
              src/...
              pom.xml
          optacloud
              src/...
              pom.xml
          .git
      
      
      When kie-wb-playground is build from source (by us or by jenkins),
      we get a jar file that embeds a .git repository as a resource:
      
      droolsjbpm/kie-wb-playground
          target
              kie-wb-playground-7.0.0-SNAPSHOT.jar
                  org/kie/wb/playground
                      content.zip // Wrap as a zip to make it easier to consume
                                        // Might not be needed to do this wrapping, Matej will investigate
                          pom.xml
                          categories.xml
                          README.md
                          mortgages
                            src/...
                            pom.xml
                          optacloud
                            src/...
                            pom.xml
                          .git // full history is in there
                              ...
      
      kie-wb-webapp 7.0.0-SNAPSHOT
          pom.xml // Depends on kie-wb-playground 7.0.0-SNAPSHOT
          // If we choose radiobutton "stock examples", then
          // A) unzip getClass().getResource()(org/kie/wb/playground/content.zip) in temp dir
          // Treat it as a remote repo (but fetching is instantaneously).
          // B) If no content.zip: use url into jar file. => better if this works, but I doubt it
      
      
      drools-wb-webapp 7.0.0-SNAPSHOT // Development only
          pom.xml // Depends on kie-wb-playground 7.0.0-SNAPSHOT
          // Same as above,
          // but filter out jbpm/optaplanner examples on tag (or category)
          // because screens not there
      
      
      Tags (or categories?): Rules, CEP, Solver, Workflow
          // Is this the categories.xml file?
          // Manstis: No. This file used to be used by the Meta-data tab on Editors and was a left-over from Guvnor 5.x. The Meta-data tab's use of "categories" was refactored to use "tags" by Pere (IIRC).
          // Manstis: I'm not sure if this file was re-purposed to hold "tags" or whether they are now stored elsewhere. Perhaps Pere can remember (or whoever made the changes).
      

            mcimbora_jira Matej Čimbora (Inactive)
            gdesmet@redhat.com Geoffrey De Smet (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: