2015-06-16 3 views

ответ

7

Вы можете сделать вывод из сценария оболочки и передать его java-action.In скрипт оболочки, эхо-свойство, как 'dateVariable = $ {DATE}', и добавить элемент capture-output int в действие оболочки. Это позволит вам фиксировать dateVariable из сценария оболочки. В действии java вы можете передать захваченную переменную в качестве параметра как $ {wf: actionData ('shellAction') ['dateVariable']}, где shellAction - это имя действия оболочки.

Пример рабочего процесса: -

<?xml version="1.0" encoding="UTF-8"?> 
<workflow-app xmlns="uri:oozie:workflow:0.4" 
    name="Test workflow"> 
    <start to="shellAction" /> 
    <action name="shellAction"> 
     <shell xmlns="uri:oozie:shell-action:0.1"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <exec>test_script.sh</exec> <file>${nameNode}/${workFlowLocation}/Scripts/test_script.sh#test_script.sh</file>   
      <capture-output /> 
     </shell> 
     <ok to="JavaAction" /> 
     <error to="fail" /> 
    </action> 

    <action name="JavaAction"> 
     <java> 
      <main-class>com.test.TestDriver</main-class> 
      <arg>${wf:actionData('shellAction')['dateVariable']}</arg> 
      <capture-output /> 
     </java> 
     <ok to="end" /> 
     <error to="fail" /> 
    </action> 

    <kill name="fail"> 
     <message>Job failed, error 
      message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <end name="end" /> 
</workflow-app> 

В сценарии оболочки, эхо значение, как показано ниже

echo "dateVariable=${dateValue}" 
+0

, когда я делаю это, я получаю нулевое значение в качестве параметра. Можете ли вы сказать мне, почему это происходит? – kartik

+0

Можете ли вы опубликовать образец рабочего процесса, который вы пробовали – InfamousCoconut

+0

, разве вы не должны экспортировать переменную в оболочку, а не эхо? – Ben

Смежные вопросы