{"action":"created","comment":{"url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments/169271473","pull_request_review_id":97768407,"id":169271473,"diff_hunk":"@@ -0,0 +1,487 @@\n+\n+Variables can come at hand while developing ProActive applications.\n+Propagate data between tasks, customize jobs, and store useful debug information are a few examples of\n+how variables can ease development. ProActive has basically two groups of variables :\n+\n+- <<_workflow_variables>>, declared on the XML job definition.\n+- <<_dynamic_variables>>, system variables or variables created at task runtime.\n+\n+[[_workflow_variables]]\n+==== Workflow variables\n+\n+Workflow variables are declared in the XML job definition. Within the definition we can have variables in several\n+levels, at job level the variables are visible and shared by all tasks. At task level, variables are visible\n+only within the task execution context.\n+\n+[[_job_variables]]\n+===== Job variables\n+\n+In a workflow you can define *job variables* that are shared and visible by all tasks.\n+\n+A job variable is defined using the following attributes:\n+\n+* *name*: the name of the variable\n+* *value*: the value of the variable\n+* *model*: the type of the value (optional). See section <<_variable_model,Variable Model>>\n+\n+\n+[[_templating]]\n+Variables are very useful to use workflows as templates where only a few parameters change for each\n+execution. Upon submission you can define variable values either from <<_scheduler_command_line, CLI>> or from\n+the Web interfaces.\n+\n+The following example shows how to define a job variable in the XML schema:\n+[source, xml]\n+----\n+<job ... >\n+    <variables>\n+        <variable name=\"variable\" value=\"value\" model=\"\"/>\n+    </variables>\n+    ...\n+</job>\n+----\n+\n+*Job variables* can be referenced anywhere in the workflow, including other job variables.\n+\n+The syntax for referencing a variable is the pattern `${variable_name}` (case-sensitive), for example:\n+\n+[source, xml]\n+----\n+<nativeExecutable>\n+    <staticCommand value=\"${variable}\" />\n+</nativeExecutable>\n+----\n+\n+===== Task variables\n+\n+Similarly to job variables, *Task variables* can be defined within task scope in the job XML definition.\n+Task variables scope is strictly limited to the task definition.\n+\n+A task variable is defined using the following attributes:\n+\n+* *name*: the name of the variable\n+* *value*: the value of the variable\n+* *inherited*: asserts whether the propagated value should be use instead of the *value* on the workflow attribute.\n+If _true_, the *value* field can be empty and as a consequence this variable is dynamically propagated from a\n+previous task.\n+* *model*: the type of the value (optional). See section <<_variable_model,Variable Model>>\n+\n+When the inherited parameters is true the variable value is propagated by a previous task (See\n+<<_inherited_variables>> for more details). Value field can be left empty however it can\n+also work as a default value in case a previous task fails to define the variable.\n+\n+For example:\n+[source, xml]\n+----\n+<task ... >\n+    <variables>\n+        <variable name=\"variable\" value=\"value\" inherited=\"false\" model=\"\"/>\n+    </variables>\n+    ...\n+</task>\n+----\n+Task variables can be used similarly to job variables using the pattern `${variable_name}` but only inside the task where the variable is defined.\n+\n+Task variables override job variables, this means that if a job variable and a task variable are defined with the same name, the task variable value will be used inside the task, and the job variable value will be used elsewhere in the job.\n+\n+\n+===== Variable Model\n+\n+Job and Task variables can define a `model` attribute which let the workflow designer control the variable value syntax.\n+A workflow designer can for example decide that the variable NUMBER_OF_ENTRIES is expected to be convertible to an Integer ranged between 0 and 20.\n+\n+The workflow designer will then provide a default value to the variable NUMBER_OF_ENTRIES, for example \"10\". This workflow is valid as \"10\" can be converted to an Integer and is between 0 and 20.\n+\n+When submitting the workflow, it will be possible to choose a new value for the variable NUMBER_OF_ENTRIES.\n+If the user submitting the workflow chooses for example the value -5, the validation will fail and an error message will appear.\n+\n+====== Available Models\n+\n+The following list describes the various model syntaxes available:\n+\n+* *PA:BOOLEAN* : variable is either \"true\", \"false\", \"0\" or \"1\".\n+* *PA:INTEGER* , *PA:INTEGER[min,max]* : variable can be converted to https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Integer.html[java.lang.Integer], and eventually is contained in the range [min, max]. +\n+Examples : PA:INTEGER will accept \"-5\" but not \"1.4\", PA:INTEGER[0,20] will accept \"12\" but not \"25\".\n+* *PA:LONG* , *PA:LONG[min,max]* : same as above with https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Long.html[java.lang.Long].\n+* *PA:FLOAT* , *PA:FLOAT[min,max]* : same as above with https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Float.html[java.lang.Float]. +\n+Examples: PA:FLOAT[-0.33,5.99] will accept \"3.5\" but not \"6\".\n+* *PA:DOUBLE* , *PA:DOUBLE[min,max]* : same as above with https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Double.html[java.lang.Double].\n+* *PA:SHORT* , *PA:SHORT[min,max]* : same as above with https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Short.html[java.lang.Short].\n+* *PA:URL* : variable can be converted to https://docs.oracle.com/javase/7/docs/api/index.html?java/net/URL.html[java.net.URL]. +\n+Examples: PA:URL will accept \"http://mysite.com\" but not \"c:/Temp\".\n+* *PA:URI* : variable can be converted to https://docs.oracle.com/javase/7/docs/api/index.html?java/net/URI.html[java.net.URI]. +\n+Examples: PA:URI will accept \"/tmp/file\" but not \"c:\\a^~to\" due to invalid characters.\n+* *PA:DATETIME(format)* , *PA:DATETIME(format)[min,max]* : variable can be converted to a https://docs.oracle.com/javase/7/docs/api/index.html?java/util/Date.html[java.util.Date] using the format specified (see the format definition syntax in the https://docs.oracle.com/javase/7/docs/api/index.html?java/text/SimpleDateFormat.html[SimpleDateFormat] class). +\n+A range can also be used in the PA:DATETIME model. In that case, each bound of the range must match the date format used. +\n++\n+Examples: +\n+PA:DATETIME(yyyy-MM-dd) will accept \"2014-12-01\" but not \"2014\". +\n+PA:DATETIME(yyyy-MM-dd)[2014-01-01, 2015-01-01] will accept \"2014-12-01\" but not \"2015-03-01\". +\n+PA:DATETIME(yyyy-MM-dd)[2014, 2015] will result in an error during the workflow definition as the range bounds [2014, 2015] are not using the format yyyy-MM-dd.\n+* *PA:LIST(item1,item2,...)* : variable must be one of the values defined in the list. +\n+Examples: PA:LIST(a,b,c) will accept \"a\", \"b\", \"c\" but no other value.\n+* *PA:REGEXP(pattern)* : variable syntax must match the regular expression defined in the pattern. The regular expression syntax is described in class https://docs.oracle.com/javase/7/docs/api/index.html?java/util/regex/Pattern.html[Pattern]. +\n+Examples: PA:REGEXP([a-z]+) will accept \"abc\", \"foo\", but not \"Foo\".\n+* *PA:MODEL_FROM_URL(url)* : variable syntax must match the model fetched from the given url. This can be used for example when the model needs to represent a list of elements which may evolve over time and is updated inside a file. Such as a list of machines in an infrastructure, a list of users, etc. +\n+Examples: PA:MODEL_FROM_URL(file:///srv/machines_list_model.txt), if the file machines_list_model.txt contains PA:LIST(host1,host2), will accept only \"host1\" and \"host2\", but may accept other values as the machines_list_model file changes.\n+* *PA:CRON* : variable syntax must be a valid cron expression as defined in the  http://www.sauronsoftware.it/projects/cron4j/manual.php#p02[cron4j manual]. +\n+Examples: PA:CRON will accept \"5 * * * \\*\" but not \"* * * *\" (missing minutes sub-pattern).\n+* *PA:SPEL(SpEL expression)* : variable syntax will be evaluated by a https://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html[SpEL] expression. Refer to next paragraph.\n+\n+====== Spring Expression Language Model\n+\n+The PA:SPEL(expr) model allows to define expressions able to validate a variable value or not. Additionally, this model can be used to validate multiple variable values or to dynamically update other variables.\n+The syntax of the SpEL expression is defined by the https://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html[Spring Expression Language reference].\n+\n+In order to interact with variables, the expression has access to the following properties:\n+\n+* *#value* : this property will contain the value of the current variable defined by the user.\n+* *variables['variable_name']* : this property array contains all the variables of the same context (for example of the same task for a task variable).\n+\n+The SpEL expression must return a *boolean value*, `true` if the value is correct, `false` otherwise, returning another type will raise an error.\n+\n+* *Example of SpEL simple validations:* +\n++\n+PA:SPEL(#value == 'abc') : will accept the value if it's the 'abc' string +\n+PA:SPEL(T(Integer).parseInt(#value) > 10) : will accept the value if it's an integer greater than 10. +\n++\n+Note that #value always contains a string and must be converted to other types if needed. +\n++\n+* *Example of SpEL multiple validations:* +\n++\n+PA:SPEL(variables['var1'] + variables['var2'] == 'abcdef') : will be accepted if the string concatenation of variable var1 and var2 is 'abcdef'. +\n+PA:SPEL(T(Integer).parseInt(variables['var1']) + T(Integer).parseInt(variables['var2']) < 100) : will be accepted if the sum of variables var1 and var2 are smaller than 100. +\n++\n+* *Example of SpEL variable inference:* +\n++\n+PA:SPEL( variables['var2'] == '' ? (variables['var2'] = variables['var1']) instanceof T(String) : true ) : if the variable var2 is empty, it will use the value of variable var1 instead. +\n++\n+Note that the SpEL expression must always return a boolean value, this is why in this last expression we use the instanceof keyword to avoid returning a string value.\n+\n+\n+\n+===== Generic Information\n+\n+In addition to variables, another key/value structure can be accessed inside a script: *_Generic Information_*.\n+\n+Generic information semantics differ from <<_job_variables>> semantics in the following way:\n+\n+ * Generic information can be accessed inside a script, but cannot be modified.\n+ * Generic information can be defined at *job level* or at *task level*. If the same generic information is defined at job level and at task level, the latter value takes precedence inside the task scope.\n+ * Generic information cannot be used directly inside the workflow with the syntax ${} (See  <<_job_variables>>).\n+ * Generic information are used in general internally by the scheduler, for example to provide information to the scheduling loop on how to handle the task. An example of such generic information is the _START_AT_ info used inside <<_cron_tasks>>.\n+ * Generic information can use in their definition job/task variables patterns, pattern replacements can be done at execution time when using task generic information.\n+\n+Example of generic information definition:\n+\n+For example:\n+[source, xml]\n+----\n+<task ... >\n+    <genericInformation>\n+        <info name=\"ginfo\" value=\"${test}\"/>\n+    </genericInformation>\n+    ...\n+</task>\n+----\n+\n+[[_dynamic_variables]]\n+\n+==== Dynamic Variables\n+\n+As opposed to <<_workflow_variables>>, *dynamic variables* are created or manipulated directly when executing scripts,\n+through the use of the \"variables\" map (see <<_variables_quick_reference>>).\n+We have mainly two types of *dynamic variables*:\n+\n+- <<_system_variables>>, declared by the ProActive scheduller.\n+- <<_inherited_variables>>, created after adding values to the *variables* map.\n+\n+[[_system_variables]]\n+===== ProActive system variables\n+\n+Some variables are implicitly defined by the Scheduler to retrieve runtime information about a job or a task.\n+\n+Here is the list of ProActive system variables:\n+\n+.ProActive variables\n+[cols=\"2,5,2\"]\n+|===\n+| *Variable name* | *Description* | *Type*\n+| `PA_JOB_ID`\n+| The current job ID.\n+| String\n+\n+| `PA_JOB_NAME`\n+| The current job name.\n+| String\n+\n+| `PA_TASK_ID`\n+| The current task ID.\n+| String\n+\n+| `PA_TASK_NAME`\n+| The current task name.\n+| String\n+\n+| `PA_TASK_ITERATION`\n+| The current iteration index, when using <<_loop,looping>>, starts at 0.\n+| Integer\n+\n+| `PA_TASK_REPLICATION`\n+| The current iteration index, when using a <<_replicate,replication>>, starts at 0.\n+| Integer\n+\n+| `PA_TASK_PROGRESS_FILE`\n+| The path to the progress file, used to set the task's progress.\n+\n+  You can import and use the utility class `org.ow2.proactive.scripting.helper.progress.ProgressFile` to read/write values to the file identified by this variable.\n+| String\n+\n+| `PA_SCHEDULER_HOME`\n+| The path to Scheduler home, where the Scheduler or the Node is installed.\n+| String\n+\n+| `PA_NODESFILE`\n+| The path to the hostfile when using a <<_multi_node_task,multi nodes task>>.\n+| String\n+\n+| `PA_NODESNUMBER`\n+| The number of acquired nodes when using a <<_multi_node_task,multi nodes task>>.\n+| Integer\n+\n+| `PA_USER`\n+| The username of the ProActive user who has submitted the job.\n+| String\n+\n+|===\n+\n+They can be used inside the workflow with the pattern syntax, for example:\n+\n+[source, xml]\n+----\n+<task ...>\n+    ...\n+     <forkEnvironment workingDir=\"/opt/${PA_JOB_ID}\"></forkEnvironment>\n+    ...\n+</task>\n+----\n+\n+[[_inherited_variables]]\n+===== Script variables\n+\n+In addition to the ability to declare variables directly inside job XML definition, it is also possible to\n+dynamically read and write new variables while executing a task script with the `variables` map. This map of `variables` is bound to\n+hash type depending on the script engine you are using, for instance in native\n+Java as http://docs.oracle.com/javase/8/docs/api/java/util/Map.html[Map^].\n+In *Groovy*  as a global map, see below:\n+\n+[source, groovy]\n+----\n+String var = variables.get(\"one_variable\")\n+variables.put(\"other_variable\", \"foo\")\n+----\n+\n+In the *Groovy* example above the first line retrieve the value of variable\n+`one_variable` from the `variables` map. The second line create a new entry  `other_variable` with value `foo`.\n+The `variables` map is propagated down the execution chain. If a task modifies a variable in the variables map,\n+or add a new variable, all dependent tasks will have access to this modification.\n+For example:\n+\n+[source, groovy]\n+----\n+// task1\n+String var = variables.get(\"one_variable\")\n+variables.put(\"one_variable\", \"foo\")\n+variables.put(\"other_variable\", \"bar\")\n+----\n+\n+[source, groovy]\n+----\n+// task2 depends on task1\n+println variables.get(\"one_variable\") // will display \"foo\"\n+println variables.get(\"other_variable\") // will display \"bar\"\n+----\n+\n+If a task depends on several tasks and each task modifies the same variable, the final value of the variable\n+which is propagated down the execution chain, depends on the *order of task execution*.\n+Therefore, the users need to take appropriate measures to prevent any undesired effects such as race conditions.\n+\n+System variables can also be accessed from the `variables` map, for example:\n+\n+[source, groovy]\n+----\n+println variables.get(\"PA_JOB_ID\") // will display the id of the current job\n+----\n+\n+If using a *Bash shell script*, variables are accessible through environment variables.\n+\n+[source, bash]\n+----\n+#!/bin/bash\n+echo $variables_PA_TASK_NAME\n+----\n+\n+WARNING: In native tasks and Bash/CMD script engines, variables can be read but not written to.\n+\n+\n+\n+For Java native script you can set any link:http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html[Java serializable object, window=\"_blank\"]\n+ as a variable value. They will be converted into strings using\n+http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString()[toString()^]\n+ method when required, for instance, to make those values available as environment variables in native tasks.\n+\n+\n+The field variable tag has an `inherited` field, if this field is set as true a task variable will read\n+its value from the *variables* map instead of the `value` field in the XML definition.\n+In this case, the *value* field becomes optional and work as a default value.\n+Below a XML schema that shows two tasks: *first* and *second*. Task *first* insert a new\n+variable using `variables.put(\"inherited_var\", \"somevalue\")`.\n+Task *second* declares *inherited_var*\n+but with *defaultvalue*, this value will be overwritten by the  *first* task, `variables.put(\"inherited_var\", \"somevalue\")`.\n+Defining a default value  might be useful if for some reason the *first* task fails before inserting the *inhereted_var*\n+on *variables* map. In this last case the `defaultvalue` remains unchanged.\n+\n+\n+\n+[source, xml]\n+----\n+<task name=\"first\" >\n+    <scriptExecutable>\n+        <script>\n+            <code language=\"groovy\">\n+                <![CDATA[\n+                variables.put(\"inherited_var\", \"somevalue\")\n+                ]]>\n+            </code>\n+        </script>\n+    </scriptExecutable>\n+</task>\n+...\n+<task name=\"second\">\n+    <variables>\n+        <variable name=\"inherited_var\" value=\"defaultvalue\" inherited=\"true\"/>\n+    </variables>\n+    <depends>\n+        <task ref=\"before\"/>\n+    </depends>\n+...\n+</task>\n+----\n+\n+\n+===== Dynamic replacements\n+\n+We've seen in <<_job_variables>> that we can use the `${varname}` syntax to create and access variables.\n+Dynamic replacement is in charge to resolve variables just before the execution of task script, or\n+in case of job variables, just before submitting the job.\n+We can also combine recursive definitions of variables.\n+\n+For example, one could write:\n+----\n+<job ...>\n+    ...\n+    <variables>\n+        <variable name=\"job_var\" value=\"hello\" model=\"\"/>\n+        <variable name=\"job_var2\" value=\"${job_var}\" model=\"\"/>\n+        <variable name=\"job_var3\" value=\"${job_var2}\" model=\"\"/>\n+    </variables>\n+    ...\n+</job>\n+----\n+\n+The dynamic replacement will resolve `job_var3` to `hello` just before submitting the job to the scheduller.","path":"src/docs/user/references/Variables.adoc","position":392,"original_position":392,"commit_id":"5067955c566f08473411ad7cde8e33b106435d14","original_commit_id":"5067955c566f08473411ad7cde8e33b106435d14","user":{"login":"jrochas","id":10711209,"avatar_url":"https://avatars3.githubusercontent.com/u/10711209?v=4","gravatar_id":"","url":"https://api.github.com/users/jrochas","html_url":"https://github.com/jrochas","followers_url":"https://api.github.com/users/jrochas/followers","following_url":"https://api.github.com/users/jrochas/following{/other_user}","gists_url":"https://api.github.com/users/jrochas/gists{/gist_id}","starred_url":"https://api.github.com/users/jrochas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrochas/subscriptions","organizations_url":"https://api.github.com/users/jrochas/orgs","repos_url":"https://api.github.com/users/jrochas/repos","events_url":"https://api.github.com/users/jrochas/events{/privacy}","received_events_url":"https://api.github.com/users/jrochas/received_events","type":"User","site_admin":false},"body":"typo: scheduller --> scheduler","created_at":"2018-02-20T10:15:23Z","updated_at":"2018-02-20T10:15:23Z","html_url":"https://github.com/ow2-proactive/documentation/pull/384#discussion_r169271473","pull_request_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments/169271473"},"html":{"href":"https://github.com/ow2-proactive/documentation/pull/384#discussion_r169271473"},"pull_request":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384"}}},"pull_request":{"url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384","id":169410593,"html_url":"https://github.com/ow2-proactive/documentation/pull/384","diff_url":"https://github.com/ow2-proactive/documentation/pull/384.diff","patch_url":"https://github.com/ow2-proactive/documentation/pull/384.patch","issue_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/384","number":384,"state":"closed","locked":false,"title":"Improvement xml3.10 selection variables resolution","user":{"login":"pedrovelho","id":9976301,"avatar_url":"https://avatars3.githubusercontent.com/u/9976301?v=4","gravatar_id":"","url":"https://api.github.com/users/pedrovelho","html_url":"https://github.com/pedrovelho","followers_url":"https://api.github.com/users/pedrovelho/followers","following_url":"https://api.github.com/users/pedrovelho/following{/other_user}","gists_url":"https://api.github.com/users/pedrovelho/gists{/gist_id}","starred_url":"https://api.github.com/users/pedrovelho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pedrovelho/subscriptions","organizations_url":"https://api.github.com/users/pedrovelho/orgs","repos_url":"https://api.github.com/users/pedrovelho/repos","events_url":"https://api.github.com/users/pedrovelho/events{/privacy}","received_events_url":"https://api.github.com/users/pedrovelho/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-02-15T15:56:49Z","updated_at":"2018-02-20T10:15:23Z","closed_at":"2018-02-19T08:35:17Z","merged_at":"2018-02-19T08:35:17Z","merge_commit_sha":"e5ba9cf91b164ee7997d5fb23183c9205d9ef410","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384/commits","review_comments_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384/comments","review_comment_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/384/comments","statuses_url":"https://api.github.com/repos/ow2-proactive/documentation/statuses/5067955c566f08473411ad7cde8e33b106435d14","head":{"label":"pedrovelho:improvement-xml3.10-selection-variablesResolution","ref":"improvement-xml3.10-selection-variablesResolution","sha":"5067955c566f08473411ad7cde8e33b106435d14","user":{"login":"pedrovelho","id":9976301,"avatar_url":"https://avatars3.githubusercontent.com/u/9976301?v=4","gravatar_id":"","url":"https://api.github.com/users/pedrovelho","html_url":"https://github.com/pedrovelho","followers_url":"https://api.github.com/users/pedrovelho/followers","following_url":"https://api.github.com/users/pedrovelho/following{/other_user}","gists_url":"https://api.github.com/users/pedrovelho/gists{/gist_id}","starred_url":"https://api.github.com/users/pedrovelho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pedrovelho/subscriptions","organizations_url":"https://api.github.com/users/pedrovelho/orgs","repos_url":"https://api.github.com/users/pedrovelho/repos","events_url":"https://api.github.com/users/pedrovelho/events{/privacy}","received_events_url":"https://api.github.com/users/pedrovelho/received_events","type":"User","site_admin":false},"repo":{"id":112731112,"name":"documentation","full_name":"pedrovelho/documentation","owner":{"login":"pedrovelho","id":9976301,"avatar_url":"https://avatars3.githubusercontent.com/u/9976301?v=4","gravatar_id":"","url":"https://api.github.com/users/pedrovelho","html_url":"https://github.com/pedrovelho","followers_url":"https://api.github.com/users/pedrovelho/followers","following_url":"https://api.github.com/users/pedrovelho/following{/other_user}","gists_url":"https://api.github.com/users/pedrovelho/gists{/gist_id}","starred_url":"https://api.github.com/users/pedrovelho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pedrovelho/subscriptions","organizations_url":"https://api.github.com/users/pedrovelho/orgs","repos_url":"https://api.github.com/users/pedrovelho/repos","events_url":"https://api.github.com/users/pedrovelho/events{/privacy}","received_events_url":"https://api.github.com/users/pedrovelho/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pedrovelho/documentation","description":"Documentation for ProActive Workflows & Scheduling","fork":true,"url":"https://api.github.com/repos/pedrovelho/documentation","forks_url":"https://api.github.com/repos/pedrovelho/documentation/forks","keys_url":"https://api.github.com/repos/pedrovelho/documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pedrovelho/documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pedrovelho/documentation/teams","hooks_url":"https://api.github.com/repos/pedrovelho/documentation/hooks","issue_events_url":"https://api.github.com/repos/pedrovelho/documentation/issues/events{/number}","events_url":"https://api.github.com/repos/pedrovelho/documentation/events","assignees_url":"https://api.github.com/repos/pedrovelho/documentation/assignees{/user}","branches_url":"https://api.github.com/repos/pedrovelho/documentation/branches{/branch}","tags_url":"https://api.github.com/repos/pedrovelho/documentation/tags","blobs_url":"https://api.github.com/repos/pedrovelho/documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pedrovelho/documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pedrovelho/documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/pedrovelho/documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pedrovelho/documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/pedrovelho/documentation/languages","stargazers_url":"https://api.github.com/repos/pedrovelho/documentation/stargazers","contributors_url":"https://api.github.com/repos/pedrovelho/documentation/contributors","subscribers_url":"https://api.github.com/repos/pedrovelho/documentation/subscribers","subscription_url":"https://api.github.com/repos/pedrovelho/documentation/subscription","commits_url":"https://api.github.com/repos/pedrovelho/documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/pedrovelho/documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/pedrovelho/documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/pedrovelho/documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/pedrovelho/documentation/contents/{+path}","compare_url":"https://api.github.com/repos/pedrovelho/documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pedrovelho/documentation/merges","archive_url":"https://api.github.com/repos/pedrovelho/documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pedrovelho/documentation/downloads","issues_url":"https://api.github.com/repos/pedrovelho/documentation/issues{/number}","pulls_url":"https://api.github.com/repos/pedrovelho/documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/pedrovelho/documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/pedrovelho/documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pedrovelho/documentation/labels{/name}","releases_url":"https://api.github.com/repos/pedrovelho/documentation/releases{/id}","deployments_url":"https://api.github.com/repos/pedrovelho/documentation/deployments","created_at":"2017-12-01T11:10:41Z","updated_at":"2017-12-01T11:10:44Z","pushed_at":"2018-02-16T15:53:41Z","git_url":"git://github.com/pedrovelho/documentation.git","ssh_url":"git@github.com:pedrovelho/documentation.git","clone_url":"https://github.com/pedrovelho/documentation.git","svn_url":"https://github.com/pedrovelho/documentation","homepage":"http://doc.activeeon.com/","size":47719,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ow2-proactive:master","ref":"master","sha":"0d917d7de26c62ce7231d83c92ca014b1cb1c5a6","user":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"repo":{"id":35725072,"name":"documentation","full_name":"ow2-proactive/documentation","owner":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ow2-proactive/documentation","description":"Documentation for ProActive Workflows & Scheduling","fork":false,"url":"https://api.github.com/repos/ow2-proactive/documentation","forks_url":"https://api.github.com/repos/ow2-proactive/documentation/forks","keys_url":"https://api.github.com/repos/ow2-proactive/documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ow2-proactive/documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ow2-proactive/documentation/teams","hooks_url":"https://api.github.com/repos/ow2-proactive/documentation/hooks","issue_events_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/events{/number}","events_url":"https://api.github.com/repos/ow2-proactive/documentation/events","assignees_url":"https://api.github.com/repos/ow2-proactive/documentation/assignees{/user}","branches_url":"https://api.github.com/repos/ow2-proactive/documentation/branches{/branch}","tags_url":"https://api.github.com/repos/ow2-proactive/documentation/tags","blobs_url":"https://api.github.com/repos/ow2-proactive/documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ow2-proactive/documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ow2-proactive/documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/ow2-proactive/documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ow2-proactive/documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/ow2-proactive/documentation/languages","stargazers_url":"https://api.github.com/repos/ow2-proactive/documentation/stargazers","contributors_url":"https://api.github.com/repos/ow2-proactive/documentation/contributors","subscribers_url":"https://api.github.com/repos/ow2-proactive/documentation/subscribers","subscription_url":"https://api.github.com/repos/ow2-proactive/documentation/subscription","commits_url":"https://api.github.com/repos/ow2-proactive/documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/ow2-proactive/documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/ow2-proactive/documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/ow2-proactive/documentation/contents/{+path}","compare_url":"https://api.github.com/repos/ow2-proactive/documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ow2-proactive/documentation/merges","archive_url":"https://api.github.com/repos/ow2-proactive/documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ow2-proactive/documentation/downloads","issues_url":"https://api.github.com/repos/ow2-proactive/documentation/issues{/number}","pulls_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/ow2-proactive/documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/ow2-proactive/documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ow2-proactive/documentation/labels{/name}","releases_url":"https://api.github.com/repos/ow2-proactive/documentation/releases{/id}","deployments_url":"https://api.github.com/repos/ow2-proactive/documentation/deployments","created_at":"2015-05-16T13:38:52Z","updated_at":"2018-02-14T12:35:22Z","pushed_at":"2018-02-20T01:40:50Z","git_url":"git://github.com/ow2-proactive/documentation.git","ssh_url":"git@github.com:ow2-proactive/documentation.git","clone_url":"https://github.com/ow2-proactive/documentation.git","svn_url":"https://github.com/ow2-proactive/documentation","homepage":"http://doc.activeeon.com/","size":47729,"stargazers_count":1,"watchers_count":1,"language":"CSS","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":29,"mirror_url":null,"archived":false,"open_issues_count":12,"license":null,"forks":29,"open_issues":12,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384"},"html":{"href":"https://github.com/ow2-proactive/documentation/pull/384"},"issue":{"href":"https://api.github.com/repos/ow2-proactive/documentation/issues/384"},"comments":{"href":"https://api.github.com/repos/ow2-proactive/documentation/issues/384/comments"},"review_comments":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384/comments"},"review_comment":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/384/commits"},"statuses":{"href":"https://api.github.com/repos/ow2-proactive/documentation/statuses/5067955c566f08473411ad7cde8e33b106435d14"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jrochas"}}