2016-01-12 5 views
0

У меня есть сценарий для передачи параметров из pentaho cde с использованием интеграции данных в пентахо, а затем обновления таблицы с использованием переданного параметра в PDI. Как передать параметр и получить переданный параметр в PDI?Параметр, передаваемый из CDE в PDI pentaho

Заранее благодарен!

ответ

0

Вам понадобится использовать плагиновую конструкцию Pentaho, SPARKL.

С его помощью вы можете загрузить преобразование в качестве вызываемой конечной точки и использовать панель управления CDE для ее вызова.

Прежде всего, вам нужно преобразование, которое ожидает параметров. Вы можете попробовать его с испытанием один перед выходом на более продвинутую трансформацию:

Пример: parameters

определение параметра и выборку с получением переменного шагом


Во-вторых, вы создадите новый плагин на SPARKL.

Sparkl экран приветствия sparkl

Дайте ваш плагин имя и добавить чайника конечную точку к нему. Если вы сейчас посмотрите на папку pentaho-solutions/system, у вас будет новая папка с именем плагина. Откройте его и найдите файл ktr внутри подпапок, чтобы заменить его на вашу трансформацию.


Последний шаг - добавить новую панель управления в свой плагин и отредактировать ее. Если вы перейдете на вкладку источников данных, обратите внимание на источники данных с «конечной точкой» в названии. Мы будем обращаться к ним по коду, но хорошо знать, что они здесь, чтобы вы могли читать данные из него, а не только вводить данные.

добавить новый ресурс JavaScript для макета CDE со следующим кодом:

var myPluginName = {}; 
(function(myself) { 
    myself.runEndpoint = function (pluginId, endpoint, opts) { 

    if (!pluginId && !endpoint) { 
     Dashboards.log('PluginId or endpointName not defined.'); 
     return false 
    } 

    var _opts = { 
     success: function() { 
     Dashboards.log(pluginId + ': ' + endpoint + ' ran successfully.') 
     }, 
     error: function(){ 
     Dashboards.log(pluginId + ': error running ' + endpoint + '.') 
     }, 
     params: {}, 
     systemParams: {}, 
     type: 'POST', 
     dataType: 'json' 
    } 
    var opts = $.extend({}, _opts, opts); 
    var url = Dashboards.getWebAppPath() + '/plugin/' + pluginId + '/api/' + endpoint; 
    function successHandler (json) { 
     if (json && json.result == false) { 
     opts.error.apply(this, arguments); 
     } else { 
     opts.success.apply(this, arguments); 
     } 
    } 
    function errorHandler() { 
     opts.error.apply(this, arguments); 
    } 

    if (endpoint != 'renderer/refresh') { 
     var ajaxOpts = { 
     url: url, 
     async: true, 
     type: opts.type, 
     dataType: opts.dataType, 
     success: successHandler, 
     error: errorHandler, 
     data: {} 
     } 
    } else { 
     var ajaxOpts = { 
     url: url, 
     async: true, 
     type: 'GET', 
     dataType: opts.dataType, 
     success: successHandler, 
     error: errorHandler, 
     data: {} 
     } 
    } 
    _.each(opts.params , function (value , key) { 
     ajaxOpts.data['param' + key] = value; 
    }); 

    _.each(opts.systemParams , function (value , key) { 
     ajaxOpts.data[key] = value; 
    }); 
    $.ajax(ajaxOpts) 
    } 
})(myPluginName); 

Вы можете изменить myPluginName с тем, что вы хотите, но, что позволяет назвать эту конечную точку отправки параметров любой кнопкой. Для этого вы можете использовать этот код:

myPluginName.runEndpoint(
        'myPluginName', // Plugin identifier. 
        'endpointName', // Put your endpoint name here! 
        { 
         params: { 
         'EXAMPLE_PARAMETER' : foo_bar 
         }, 
         success: function() { Dashboards.fireChange('refresh', 1); alert('data sent'); }, 
         error: function() { alert('Ops, something went wrong. Check the logs.'); } 
        }) 

Вы можете следить за выполнением путем мониторинга журналов би-сервера.

Более подробную информацию об источниках:

Diethard Steiner - Blog
Francesco Corti - Blog
Следуйте этим парням, они удивительны.

+0

Вам не нужен искр. Достаточно простого источника данных CDA для чайника. Вам просто нужно убедиться, что вы задаете не только параметры запроса, но также сопоставление между параметрами CDA и параметрами чайника, заполнив тег Variables. – nsousa

+0

спасибо. Это проверит. :-) – user3702039

0

Вы могли бы это сделать или просто создать источник данных CDA, который принимает параметр, определенный в вашем преобразовании.

Парамы передаются в CDA через обычный & paramYOURPARAMNAME = синтаксис x по URL-адресу.

В преобразовании вы получаете параметр, используя шаг get variables.

Я что-то пропустил?