以下示例采用脚本任务风格


### 1、if 控制示意


使用节点（活动节点）任务条件

```yaml
id: "c1"
layout: 
  - { when: "order.getAmount() >= 100", task: "order.setScore(0);"}
```


使用排它网关

```yaml
id: "c1"
layout: 
  - {type: "exclusive", link: [{when: "order.getAmount() >= 100", nextId: "do"}]}
  - {id: "do", task: "order.setScore(0);"}
```

节点（活动节点）任务内控制

```yaml
id: "c1"
layout: 
  - task: |
      if (order.getAmount() >= 100) {
        order.setScore(0);
      }
```



### 2、loop / for  控制示意

使用循环网关

```yaml
id: "c1"
layout: 
  - {type: "loop", meta: {"$for": "item", "$in": "list"}}
  - task: 'System.out.println(item);'
```


节点（活动节点）任务内控制

```yaml
id: "c1"
layout: 
  - task: |
      for(int i=0; i<10; i++) {
        System.out.println(i); //打印
      }
```



### 3、while 控制示意


使用排它网关 + 计数器（while）

```yaml
# like: do-while
id: c1
layout:
  - {type: "start"}
  - {task: 'context.put("demo", new java.util.concurrent.atomic.AtomicInteger(0));'}
  - {id: do, task: 'System.out.println(demo.get());'}
  - {type: "exclusive", link: [{when: 'demo.incrementAndGet() < 10', nextId: do}]}
```


```yaml
# like: while-do
id: c1
layout:
  - type: start
  - task: 'context.put("demo", new java.util.concurrent.atomic.AtomicInteger(0));'
  - id: while
    type: "exclusive"
    link:
      - nextId: do
        condition: 'demo.incrementAndGet() < 10'
  - id: do
    task: |
      System.out.println(demo.get());
    link: while
```

### 4、switch 控制示意


使用节点（活动节点）任务条件

```yaml
id: "c1"
layout: 
  - {when: 'type == 1', task: ...}
  - {when: 'type == 2', task: ...}
```



使用排它网关

```yaml
id: c1
layout:
  - {type: exclusive, link: [{when: "type == 1", nextId: "do1"}, {when: "type == 2", nextId: "do2"}]}
  - {id: do1, task: ...}
  - {id: do2, task: ...}
```


节点（活动节点）任务内控制

```yaml
id: "c1"
layout: 
  - task: |
      switch(type) {
        case 1: ...
        case 2: ...
      }
```
