digdagの変数

```vartest.dig
_export:
  var_top: var_top_val

+tasktop1:
  _export:
    var_tasktop1: var_tasktop1_val

  +tasksub1:
    _export:
      var_tasksub1: var_tasksub1_val
    echo>: at tasksub1... ${var_top} ${var_tasktop1} ${var_tasksub1}

  +tasksub2:
    rb>: SetVar.setVar
    require: 'setvar'

  +tasksub3:
    echo>: at tasksub3... ${var_rb}

+tasktop2:
  echo>: at tasktop2... ${var_top} ${var_rb} # var_tasktop1/var_tasksub1を参照するとエラー

+tasktop3:
  _export:
    var_top: var_top_val_override # 値の上書き可能
    var_rb: ${var_rb}_override    # 値の参照・上書きすると変な循環状態になってしまうのでやめるべき(☆)

  +tasksub4:
    echo>: at tasksub4... ${var_top} ${var_rb}

  +tasksub5:
    sh>: echo at tasksub5... ${var_top} ${var_rb}
```

実は_exportなしでもサブタスクがなければ変数作れるが、マニュアルにそんな記述ないっぽいのでやめた方が良さそう

```setvar.rb
require 'pp'

class SetVar
  def setVar
    pp Digdag.env.params
    Digdag.env.store(var_rb: 'var_rb_val')
  end
end
```

結果

```
2016-10-25 16:28:11 +0900: Digdag v0.8.17
2016-10-25 16:28:14 +0900 [WARN] (main): Using a new session time 2016-10-25T00:00:00+00:00.
2016-10-25 16:28:14 +0900 [INFO] (main): Using session /tmp/.digdag/status/20161025T000000+0000.
2016-10-25 16:28:14 +0900 [INFO] (main): Starting a new session project id=1 workflow name=vartest session_time=2016-10-25T00:00:00+00:00
2016-10-25 16:28:17 +0900 [INFO] (0016@+vartest+tasktop1+tasksub1): echo>: at tasksub1... var_top_val var_tasktop1_val var_tasksub1_val
at tasksub1... var_top_val var_tasktop1_val var_tasksub1_val
2016-10-25 16:28:18 +0900 [INFO] (0016@+vartest+tasktop1+tasksub2): rb>: SetVar.setVar
{"timezone"=>"UTC",
 "session_uuid"=>"fca5f15a-bb7e-459c-980d-1268162c42be",
 "session_time"=>"2016-10-25T00:00:00+00:00",
 "session_date"=>"2016-10-25",
 "session_date_compact"=>"20161025",
 "session_local_time"=>"2016-10-25 00:00:00",
 "session_tz_offset"=>"+0000",
 "session_unixtime"=>1477353600,
 "project_id"=>1,
 "var_top"=>"var_top_val",
 "var_tasktop1"=>"var_tasktop1_val",
 "rb>"=>"SetVar.setVar",
 "require"=>"setvar",
 "_type"=>"rb",
 "_command"=>"SetVar.setVar"}
2016-10-25 16:28:19 +0900 [INFO] (0016@+vartest+tasktop1+tasksub3): echo>: at tasksub3... var_rb_val
at tasksub3... var_rb_val
2016-10-25 16:28:20 +0900 [INFO] (0016@+vartest+tasktop2): echo>: at tasktop2... var_top_val var_rb_val
at tasktop2... var_top_val var_rb_val
2016-10-25 16:28:21 +0900 [INFO] (0016@+vartest+tasktop3+tasksub4): echo>: at tasksub4... var_top_val_override ${var_rb}_override_override
at tasksub4... var_top_val_override ${var_rb}_override_override
2016-10-25 16:28:22 +0900 [INFO] (0016@+vartest+tasktop3+tasksub5): sh>: echo at tasksub5... var_top_val_override ${var_rb}_override_override
at tasksub5... var_top_val_override ${var_rb}_override_override_override_override
Success. Task state is saved at /tmp/.digdag/status/20161025T000000+0000 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
```

Digdag.env.store()した変数はトップレベルの_exportと同じスコープになる

☆が変な循環になって「\$\{var\_rb\}\_override\_override」とか「\$\{var\_rb\}\_override\_override\_override\_override」とかになってしまう
こういうことはしないようにしよう

参考：
http://docs.digdag.io/workflow_definition.html#defining-variables
https://youtu.be/OAaFr_CnXvk?t=832 ※digdag公開前の動画
https://youtu.be/OAaFr_CnXvk?t=1812 ※digdag公開前の動画