<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcin Michniewicz</title>
    <description>The latest articles on DEV Community by Marcin Michniewicz (@marcin_michniewicz).</description>
    <link>https://dev.to/marcin_michniewicz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F478722%2Ffe103b5c-0438-47e8-bdd2-b3ec26a5c0ad.jpg</url>
      <title>DEV Community: Marcin Michniewicz</title>
      <link>https://dev.to/marcin_michniewicz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcin_michniewicz"/>
    <language>en</language>
    <item>
      <title>[Bonita UI Designer] creating Custom widget for BPMN Visualization</title>
      <dc:creator>Marcin Michniewicz</dc:creator>
      <pubDate>Wed, 19 May 2021 14:18:37 +0000</pubDate>
      <link>https://dev.to/marcin_michniewicz/bonita-ui-designer-creating-custom-widget-for-bpmn-visualization-44lk</link>
      <guid>https://dev.to/marcin_michniewicz/bonita-ui-designer-creating-custom-widget-for-bpmn-visualization-44lk</guid>
      <description>&lt;h1&gt;
  
  
  Abstract
&lt;/h1&gt;

&lt;p&gt;The Bonita platform offers a graphical web UI editor called Bonita UI Designer. If you use Bonita UI Designer to develop forms and pages for a process application on the Bonita BPMN platform, you may want to create custom widgets - and this is an article that offers some ideas and instructions.&lt;/p&gt;

&lt;p&gt;Specifically, you will see how easy it is to create a preview for the Bonita BPMN model in a UI Designer Page.&lt;/p&gt;

&lt;p&gt;Note that the &lt;a href="https://process-analytics.github.io/bpmn-visualization-js/api/index.html" rel="noopener noreferrer"&gt;DiagramAPI&lt;/a&gt; used in this example is only available in Enterprise Edition. Nevertheless, you can use any BPMN diagram file created externally, to present it and use &lt;a href="https://process-analytics.github.io/bpmn-visualization-js/api/index.html" rel="noopener noreferrer"&gt;process analytics API&lt;/a&gt; to show some additional informative layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What will be described through the guide?
&lt;/h2&gt;

&lt;p&gt;We will first create a custom widget, then place it in the UI Designer Page. Then we will create some variables and API calls to obtain the desired process. Finally, we will put it all together and pass the chosen process to the widget, so it is rendered and visible.&lt;/p&gt;

&lt;p&gt;To render the BPMN model in this example we will use the Open Source Apache-2.0 library called BPMN Visualization. Find more information about this library in the GitHub repository: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;BPMN Visualization&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Create a Custom Widget
&lt;/h1&gt;

&lt;p&gt;Launch UI Designer&lt;/p&gt;

&lt;p&gt;Create the new Artifact of type Custom Widget&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uun3uruh1sbxf1xb267.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uun3uruh1sbxf1xb267.png" alt="Create Custom Widget"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type &lt;code&gt;bpmnVisualization&lt;/code&gt; as Custom widget name and click Create.&lt;/p&gt;

&lt;p&gt;You will land in the &lt;strong&gt;WIDGET EDITOR&lt;/strong&gt;.&lt;br&gt;
Few things to be done here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Template: replace default template div with&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div id="bpmn-container"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;  Controller: your function should look like one below&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function ($scope) {
    //initialize rendering library (added in the assets)
    const bpmnVisualization = new bpmnvisu.BpmnVisualization(window.document.getElementById('bpmn-container'));

    //load diagram when ready
    $scope.$watch('properties.bpmnXmlString', function() {
      var bpmnXml = $scope.properties.bpmnXmlString;
      if (bpmnXml) {
        bpmnVisualization.load(bpmnXml);
      }
    });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Define property: bpmnXmlString&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq4xa4nlt6b5r53em31t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq4xa4nlt6b5r53em31t.png" alt="bpmnXmlString"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the new asset: bpmn-visualization.js&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Type: &lt;code&gt;JavaScript&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Source: &lt;code&gt;External&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  URL: &lt;code&gt;https://unpkg.com/bpmn-visualization@{version}/dist/bpmn-visualization.js&lt;/code&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44odcg23ybamupkbbnnd.png" alt="Add new asset"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  Application Page
&lt;/h1&gt;

&lt;p&gt;Create the new Artifact of type Application Page&lt;/p&gt;

&lt;p&gt;For the name, you can use &lt;code&gt;bpmnVisualization&lt;/code&gt;, click Create.&lt;br&gt;
You will land in the &lt;strong&gt;PAGE EDITOR&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The final page should look like that:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13k19tnlz8v7wo1c766z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13k19tnlz8v7wo1c766z.png" alt="UID Page Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The layout is really up to you, feel free to adjust anything you wish.&lt;/p&gt;

&lt;p&gt;The core elements to make it work are as follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Variables:

&lt;ul&gt;
&lt;li&gt;  diagramId - Type &lt;code&gt;String&lt;/code&gt; — &lt;em&gt;it will hold the id of the chosen process diagram.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  processesAPI - Type &lt;code&gt;ExternalAPI&lt;/code&gt;, API URL: &lt;code&gt;../API/bpm/process?f=activationState=ENABLED&amp;amp;p=0&amp;amp;c=10&amp;amp;o=version%20desc&lt;/code&gt; — &lt;em&gt;it will hold available/accessible processes.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  diagramAPI - Type: &lt;code&gt;External API&lt;/code&gt;, API URL: &lt;code&gt;../API/bpm/diagram/{{diagramId}}&lt;/code&gt; — &lt;em&gt;it will hold the String representation of BPMN xml definition.&lt;/em&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d0khli1269ntvm3cupx.png" alt="diagramAPI "&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; We need to link these variables to proper elements:

&lt;ul&gt;
&lt;li&gt;  Select setup:

&lt;ul&gt;
&lt;li&gt;  Available values: &lt;code&gt;processesAPI&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Displayed key: &lt;code&gt;name&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Returned key: &lt;code&gt;id&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Value: &lt;code&gt;diagramId&lt;/code&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftufyv45n77jatwf7ygz5.png" alt="Select setup"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Custom Widget (bpmnVisualization) setup:

&lt;ul&gt;
&lt;li&gt;  BPMN xml string: &lt;code&gt;diagramAPI&lt;/code&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iq7k68ajgizs5ftvb81.png" alt="Custom Widget setup"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Optionally we can set up the input, on the right side of the Select, to show us the currently chosen diagramId:

&lt;ul&gt;
&lt;li&gt;  Value: &lt;code&gt;diagramId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Type: &lt;code&gt;text&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;We are all set!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Preview
&lt;/h1&gt;

&lt;p&gt;For the preview purpose, I have created a simple process called: &lt;code&gt;Work travel&lt;/code&gt; in the Bonita Studio.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ibtlvpnt50j0atbs04a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ibtlvpnt50j0atbs04a.png" alt="Bonita Studio Model"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please make sure the user with who you are testing has required permissions:&lt;br&gt;
an entry in Process Manager mapping concerning the desired process(to be checked in Bonita Portal).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once we click on the &lt;code&gt;Preview&lt;/code&gt; button in UI Designer we should see the page where we can choose the process.&lt;br&gt;
I have simply chosen &lt;code&gt;Work travel&lt;/code&gt;, and the output looks like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dewm524kez0gx2pni5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dewm524kez0gx2pni5g.png" alt="UID Page Preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WORTH TO NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Open Source Apache-2.0 rendering library: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;BPMN Visualization&lt;/a&gt; is highly customizable.&lt;br&gt;
You can check the examples &lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/master/examples/index.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To preview the code of the mentioned examples, go directly to the &lt;a href="https://github.com/process-analytics/bpmn-visualization-examples" rel="noopener noreferrer"&gt;bpmn-visualization-examples repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>processanalytics</category>
      <category>digitalprocessautomation</category>
      <category>bonitasoft</category>
    </item>
    <item>
      <title>Simplifying life: Using GitHub Actions for Continuous Integration in a BPMN Visualization open source project</title>
      <dc:creator>Marcin Michniewicz</dc:creator>
      <pubDate>Tue, 27 Oct 2020 12:41:17 +0000</pubDate>
      <link>https://dev.to/marcin_michniewicz/simplifying-life-using-github-actions-for-continuous-integration-in-a-bpmn-visualization-open-source-project-42i7</link>
      <guid>https://dev.to/marcin_michniewicz/simplifying-life-using-github-actions-for-continuous-integration-in-a-bpmn-visualization-open-source-project-42i7</guid>
      <description>&lt;h1&gt;
  
  
  tldr
&lt;/h1&gt;

&lt;p&gt;If you are familiar with GitHub Actions you may want to jump directly to the workflow descriptor &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/blob/master/.github/workflows/build.yml"&gt;build.yml&lt;/a&gt; and figure everything out by yourself. If not I invite you to read the text below.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;The BPMN Visualization, open source project, has been launched to develop a TypeScript Library for process visualization. In this article, I’ll explain how we are using GitHub actions to create a build workflow which we’ll use for this BPMN Visualization project.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But first, some definitions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.bpmn.org"&gt;BPMN&lt;/a&gt; is a graphical notation standard published by the Object Management Group that is used to model executable business processes.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;BPMN Visualization&lt;/a&gt; is a TypeScript library designed so you can visualize process execution data on BPMN diagrams.&lt;br&gt;
It is in the early development stage, and so is subject to changes prior to the 1.0.0 release. Check out the code from our GitHub: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;repository&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/free-pro-team@latest/actions"&gt;GitHub Actions&lt;/a&gt; allow you to automate, customize, and execute software development workflows directly in a repository.&lt;br&gt;
Read more about this amazing tool here: &lt;a href="https://github.com/marketplace?type=actions"&gt;GitHub Actions marketplace&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  Useful GitHub terms and glossary
&lt;/h1&gt;

&lt;p&gt;Although I recommend you check the &lt;a href="https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions"&gt;GitHub Actions documentation&lt;/a&gt;, I have described below the basic elements needed to understand the main principles of GitHub Actions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What is &lt;strong&gt;&lt;em&gt;Action&lt;/em&gt;&lt;/strong&gt;? Action is an individual task that can be combined with other tasks to create a job. For example, “check out the repository,” or “set up a working environment.” There are plenty of GitHub Actions available - you can easily search for them on the GitHub Actions marketplace. There are actions developed by the GitHub team, and also some from third party vendors. If you feel something is missing you can develop your own action as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;&lt;em&gt;job&lt;/em&gt;&lt;/strong&gt; consists of one or more actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;&lt;em&gt;workflow&lt;/em&gt;&lt;/strong&gt; consists of one or more jobs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;&lt;em&gt;trigger&lt;/em&gt;&lt;/strong&gt; is an event that triggers a specified workflow (for example, a push to the master branch).&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;You can define multiple workflows in your project. A workflow definition resides in a YAML file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;
  
  
  Expectations from the Build workflow.
&lt;/h1&gt;

&lt;p&gt;It automatizes repetitive tasks by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;installing dependencies,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;building the project, and&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;testing the project&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;after every new feature is pushed to the repository and a Pull Request is created.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;The Build workflow permits you to automatically run a set of steps to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;check if the application can be built on multiple platforms&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;validate that incoming code changes are of good quality, using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  lint&lt;/li&gt;
&lt;li&gt;  unit tests&lt;/li&gt;
&lt;li&gt;  e2e tests&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  GitHub Actions - Build workflow
&lt;/h1&gt;

&lt;p&gt;To show the power and simplicity of GitHub Actions I’ll show you the Build workflow which we use for our new, emerging open source project: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;BPMN Visualization&lt;/a&gt;.&lt;br&gt;
Feel free to preview the original workflow configuration file (&lt;a href="https://github.com/process-analytics/bpmn-visualization-js/blob/master/.github/workflows/build.yml"&gt;build.yml&lt;/a&gt;) directly in the GitHub repository.&lt;/p&gt;

&lt;p&gt;Build workflow consists of two GitHub Actions. They are fairly simple - you can check their respective documentation pages for more information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/marketplace/actions/checkout"&gt;GitHub Action: checkout&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/marketplace/actions/setup-node-js-environment"&gt;GitHub Action: setup-node&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is the content of the aforementioned &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/blob/master/.github/workflows/build.yml"&gt;build.yml&lt;/a&gt; along with the comments. It is divided into 2 parts for readability purposes.&lt;/p&gt;

&lt;p&gt;The first part shows the upper portion of the file. The &lt;code&gt;name&lt;/code&gt; of the workflow is followed by definitions of events &lt;code&gt;on&lt;/code&gt; which the jobs defined in this workflow will be triggered.&lt;br&gt;&lt;br&gt;
You can see from the code that there are 2 triggers: &lt;code&gt;push&lt;/code&gt; to branch master and &lt;code&gt;pull request&lt;/code&gt; creation with the master as its base.&lt;br&gt;&lt;br&gt;
Triggers will not work if the changes occur in the files specified under the key: paths-ignore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build workflow part 1/2.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build&lt;/span&gt;

    &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
        &lt;span class="na"&gt;paths-ignore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.path1'&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.path2'&lt;/span&gt;
      &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
        &lt;span class="na"&gt;paths-ignore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.path1'&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.path2'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second part shown below defines the &lt;code&gt;job&lt;/code&gt; Build. We make the job run on 3 different Operating Systems (Ubuntu, macOS, Windows) to make sure it can be launched on the majority of the available devices.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;actions/checkout@v2 - First, check out the repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;actions/setup-node@v1 - Then, setup node environment with the specified version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;next steps are simply node commands that install dependencies and execute quality assurance checks on the codebase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  npm ci - install dependencies&lt;/li&gt;
&lt;li&gt;  npm run lint-check - lint the code&lt;/li&gt;
&lt;li&gt;  npm run build - build the application&lt;/li&gt;
&lt;li&gt;  npm run test:unit - run unit tests&lt;/li&gt;
&lt;li&gt;  npm run test:e2e - run e2e tests&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Build workflow part 2/2.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;    &lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ matrix.os.name }}&lt;/span&gt;
        &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="c1"&gt;# we want to run the full build on all os: don't cancel running jobs even if one fails&lt;/span&gt;
          &lt;span class="na"&gt;fail-fast&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;
          &lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# we define the matrix of systems on which we want to perform the build job&lt;/span&gt;
            &lt;span class="na"&gt;os&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;macos-latest&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;windows-latest&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Setup node&lt;/span&gt;
            &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v1&lt;/span&gt;
            &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;12.x&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Verify node, npm version&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
              &lt;span class="s"&gt;node --version&lt;/span&gt;
              &lt;span class="s"&gt;npm --version&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install dependencies&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm ci&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Lint check&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run lint-check&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build Application&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run build&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Test Application&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run test:unit&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Test Application End to End&lt;/span&gt;
            &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run test:e2e&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;As you can see, using GitHub Actions is very simple and it’s well documented. The creation of the basic workflow that really does the job is a matter of minutes and saves us hours of time normally lost on repetitive tasks. I hope this is clear enough but if you have any questions don’t hesitate to pose them in the comment section.&lt;br&gt;
As this is an open source project, our team invites you to join the community and contribute: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;https://github.com/process-analytics/bpmn-visualization-js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a bonus here is the preview of the execution of the Build workflow in GitHub:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dYPt9tQA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/570jux99lng99ixj4bhk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dYPt9tQA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/570jux99lng99ixj4bhk.png" alt="workflow_execution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wish you all passing builds and good test coverage.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>bpmnvisualization</category>
      <category>processanalytics</category>
      <category>github</category>
    </item>
    <item>
      <title>Hacktoberfest challenge</title>
      <dc:creator>Marcin Michniewicz</dc:creator>
      <pubDate>Thu, 01 Oct 2020 09:04:51 +0000</pubDate>
      <link>https://dev.to/marcin_michniewicz/hacktoberfest-challenge-398g</link>
      <guid>https://dev.to/marcin_michniewicz/hacktoberfest-challenge-398g</guid>
      <description>&lt;p&gt;Hello everybody&lt;br&gt;
At the beginning of this year, we have started our open source library for BPMN process visualization&lt;/p&gt;

&lt;p&gt;Please help us to improve it with your contributions and ideas.&lt;/p&gt;

&lt;p&gt;Code is here:&lt;br&gt;
&lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;https://github.com/process-analytics/bpmn-visualization-js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Small app for Hacktoberfest promotion - you can easily adapt a customizable diagram so it contain your project name, choose between 3 different themes!&lt;br&gt;
&lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/master/examples/hacktoberfest-diagram/index.html"&gt;https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/master/examples/hacktoberfest-diagram/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More live examples are available:&lt;br&gt;
&lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/master/examples/index.html"&gt;https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/master/examples/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions - let us know directly on GitHub&lt;br&gt;
We are here for you!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
      <category>process</category>
      <category>visualization</category>
    </item>
  </channel>
</rss>
