美文网首页
Handler创建Dispatcher请求

Handler创建Dispatcher请求

作者: 猪肉炖粉条_001 | 来源:发表于2019-07-19 16:39 被阅读0次

Handler创建Dispatcher请求

应用场景

在Handler中执行耗时较久的程序时,等待执行过程中,客户端界面无法进行其他操作,只能等待,而通过dispatcher调度可以解决这种问题。

Handler创建Dispatcher请求

void create_dispatcher_request() {
    char *err_string = NULL,*err_function = NULL;
    int err_line = -1;
    int rcode = ITK_ok;
    
    char *value = "key=123abc";
    tag_t request = NULLTAG;
    char *uid = NULL;
    
    SAFECALL(DISPATCHER_create_request("SIEMENS", "test", 2, NULL, NULL, 0, 0, NULLTAG, NULLTAG, 1, &value, "ONDEMAND-PRIORITY", 0, (const char**)NULL, (const char**)NULL, &request));
    
    ECHO("request : %d\n", request);
    SAFECALL(POM_tag_to_uid(request, &uid));
    ECHO("request uid: %s\n", uid);
   CLEANUP:
     ECHO("rcode : %d\n", rcode);
}

创建响应

1、创建响应工程

1、创建一个普通的java工程,导入依赖包,依赖包存在于DispatcherClient\lib。

1.png

2、创建下图所示的java文件

package translator.test;

import com.teamcenter.ets.extract.DefaultTaskPrep;
import com.teamcenter.ets.request.TranslationRequest;
import com.teamcenter.translationservice.task.Option;
import com.teamcenter.translationservice.task.TranslationTask;
import com.teamcenter.translationservice.task.TranslatorOptions;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.Map;

/**
 * Created by Administrator on 7/2/2019.
 */
public class TestTask extends DefaultTaskPrep {

    @Override
    public TranslationTask prepareTask() throws Exception {

       Map<String, String> map = TranslationRequest.getTranslationArgs(request);
       String fileName=  "qwert.txt";
       try(PrintStream ps = new PrintStream(new FileOutputStream(this.stagingLoc + File.separator + fileName))) {
           for (Map.Entry<String, String> entry : map.entrySet()) {
               m_zTaskLogger.info("--key : " + entry.getKey() + " --value : " + entry.getValue());
               ps.println(entry.getKey() + "=" + entry.getValue());

           }
       }

        this.m_zTaskLogger.info("prepareTask start ...");
        TranslationTask task = prepTransTask(null, null, null, null, false, false, null, 0, null);
        TranslationTask translationTask = addRefIdToTask(task, 0);
        createTranslatorOptions(translationTask, map);
        TranslatorOptions translatorOptions = translationTask.getTranslatorOptions();
        Option[] options = translatorOptions.getOption();
        for(Option option : options) {
            this.m_zTaskLogger.info("name : " + option.getName() + " value : " + option.getValue());
        }

        this.m_zTaskLogger.info("prepareTask end ...");
        return translationTask;
    }
}

3、打成jar包

4、将导出的jar包放入DispatcherClient\lib下。

5、修改DispatcherClient\conf下Service.properties文件

Translator.SIEMENS.test.Prepare=translator.test.TestTask

SIEMENS是Handler请求中ProviderName,bomchange是Handler请求中服务名,等号后面是TaskPrep类的全限定名。

6、修改Module\conf下translator.xml文件

1、在标签内加入

  <test provider="SIEMENS" service="test" maxlimit="3" isactive="true">
    <TransExecutable dir="&MODULEBASE;/Translators/test" name="test.bat"/>
     <Options>
      <Option name="taskid" string="" description="Task ID from Dispatcher Client."/>
      <Option name="inputpath" string=""
              description="Full path to the input file which will contain user input for complete dispatcher service."/>    
              
        <Option name="clientoption" optionkey="key" string=""
               description="arguments for utility command"/>       
                        
    </Options>
    
  </test>

SIEMENS为ProviderName,test为ServiceName,dir指定test.bat文件的路径为Translators下test文件夹。

7、书写test.bat,并放在Translators下test文件夹内。

cd "C:\Apps\PLM\dispatcher\Module\Translators\test"
java Hello %1 %2 %3

需根据实际情况修改路径,bat调用执行程序。

结果:

2.png

相关文章

网友评论

      本文标题:Handler创建Dispatcher请求

      本文链接:https://www.haomeiwen.com/subject/kkyslctx.html