Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN

Preview:

Citation preview

Ein Prozess lernt laufenLEGO® MINDSTORMS® Steuerung mit BPMN

Oliver Hock

Videa Project Services GmbH

2

videa-services.comwww.videa.services oliver.hock@videa.services

JUG Hamburg Kids4IT Hamburg kids4it.de

@oliver_hockOliver_Hock3

olihock / bepemind

3

Die Firma

4

Die Idee

PE

Geschäftsprozesse

Neugier

SpaßPräzision

Know-how

5

Der Roboter

Definition

Steuerung

6

Die Schnittstellen

Momentaufnahmen9V Ausgang

Zustände

Abfragen

Motoren Sensoren

7

Das Modell

CubeFinder

GRIPP3R

8

Die Architektur

PC/Remote API

Sensor/Motor Port APIleJOS

9

BPM Plattform

BusinessDevelopers

Admins Framework

BPMN 2 Process Engine for Java

JARWorkflowsJava Application

10

Business Process Modeling Notation

11

Business Process Modeling Notation

up

down

12

Process DesignMain Process

Name Value

Subprocess

Name Value

EL

EL

13

CubeFinder Process Design

CubeFinder Main

Walk

SearchWalk Right And

DownWalk Right And Up

TurnWalk And Scan

Scan

14

Suchmuster

x

y

2m

3m

turnwalk

walk up

right

down

scanscan

15

CubeFinder Project Design

Robot Access Delegate Layer

EV3 Brick Access Singleton

Service Task Processes

«JavaDelegate»

Data Objects

CubeFinder Functions RotateDelegateFetchSampleDelegate

Brick.getInstance()

Very Static Model getRegulatedMotor(p)

getSampleProvider(p)

Host = “192.168.173.67”

16

Service Tasks Java DelegatesProcess

public class RotateDelegate implements JavaDelegate {

private FixedValue port;private JuelExpression angle;

17

Java Implementation

@Overridepublic void execute(DelegateExecution execution)

throws Exception {

String portValue = (String) port.getValue(execution);Long angleValue = (Long) angle.getValue(execution);

String hostVar = ""+execution.getVariable("Host");

// leJOS API stuff here

}

Process Execution

18

public class ProcessTestCubeFinderMain {

@Test public void startProcess()

throws RemoteException { repositoryService

.createDeployment()

.addInputStream(

"cubeFinderMain.bpmn20.xml", mainPath))

.addInputStream( "scan.bpmn20.xml", scanPath)

.deploy();}}

Run as …

19

leJOS Remote API

Brick.java

20

leJOS Motor API

RotateDelegate.java

21

leJOS RegulatedMotor API

22

leJOS RegulatedMotor API

23

leJOS Sensor API

FetchSampleDelegate.java

24

leJOS SampleProvider API

25

Demo

27

Ausblick

28

QuellenTilted Twister 2.0

Cube Finder

Engine / DesignerEclipse Mars.1 for Java Developers

GitHub

Eclipse Juno Java Dev

CubeTwister (Randelshofer)KCube 1.0 by Greg SchmidtKociemba two-phase solver 

29

Danke schön