2016-08-01 7 views
0

のカスタムJavaコンポーネントを作成して、渡されたExcelファイルに基づいて処理します。ファイルはのコンテンツIDでキーイングされています。 Excelファイルを読み込んだ後でアプリケーションが最初に行うことの1つは、DOC_INFO_BY_NAMEです。短いでカスタムWCC JavaサービスからDOC_INFO_BY_NAMEを呼び出すことができません

:なぜ名前でDOC_INFO_BY_NAMEdProcessingStateを見つけることができないと私はそれをどのように修正するのですか?私が行うとき


以下

詳細はしかし、私は、次のエラーメッセージが表示されます。

エラーは、 'LOCALHOST16200000001' のDOC_INFOを取得します。 「LOCALHOST16200000001」の情報を取得できません。ファイル形式情報を取得できません。パラメータ 'dProcessingState'が見つかりません。 [詳細]

エラーが発生しました。以下のスタックトレースは、より多くの情報を示しています。

!$Error getting DOC_INFO for 'LOCALHOST16200000001'.!csUnableToGetRevInfo2,LOCALHOST16200000001!csUnableToGetFileFormatInfo!syParameterNotFound,dProcessingState 
intradoc.common.ServiceException: !csUnableToGetRevInfo2,LOCALHOST16200000001!csUnableToGetFileFormatInfo 
     at intradoc.server.ServiceRequestImplementor.buildServiceException(ServiceRequestImplementor.java:2176) 
     at intradoc.server.Service.buildServiceException(Service.java:2404) 
     at intradoc.server.Service.createServiceExceptionEx(Service.java:2398) 
     at intradoc.server.Service.createServiceException(Service.java:2393) 
     at intradoc.server.DocCommonHandler.getDocFormats(DocCommonHandler.java:271) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at intradoc.common.IdcMethodHolder.invokeMethod(IdcMethodHolder.java:86) 
     at intradoc.common.ClassHelperUtils.executeMethodReportStatus(ClassHelperUtils.java:324) 
     at intradoc.server.ServiceHandler.executeAction(ServiceHandler.java:79) 
     at intradoc.server.Service.doCodeEx(Service.java:622) 
     at intradoc.server.Service.doCode(Service.java:594) 
     at intradoc.server.ServiceRequestImplementor.doAction(ServiceRequestImplementor.java:1693) 
     at intradoc.server.Service.doAction(Service.java:566) 
     at intradoc.server.ServiceRequestImplementor.doActions(ServiceRequestImplementor.java:1483) 
     at intradoc.server.Service.doActions(Service.java:561) 
     at intradoc.server.ServiceRequestImplementor.executeActions(ServiceRequestImplementor.java:1415) 
     at intradoc.server.Service.executeActions(Service.java:547) 
     at intradoc.server.ServiceRequestImplementor.doRequestInternalEx(ServiceRequestImplementor.java:958) 
     at intradoc.server.ServiceRequestImplementor.executeServiceTopLevelSimple(ServiceRequestImplementor.java:1070) 
     at com.lowes.content.edam.massMetaDataUpdate.service.types.ServicesWrapper.executeService(ServicesWrapper.java:139) 
     at com.lowes.content.edam.massMetaDataUpdate.service.file.GetFileService.getDocInfo(GetFileService.java:478) 
     at com.lowes.content.edam.massMetaDataUpdate.service.ServiceFieldMapper.getMappings(ServiceFieldMapper.java:76) 
     at com.lowes.content.edam.massMetaDataUpdate.file.mapper.impl.FieldMapWorker.doInBackground(FieldMapWorker.java:107) 
     at com.lowes.content.edam.massMetaDataUpdate.file.mapper.impl.FieldMapWorker.doInBackground(FieldMapWorker.java:37) 
     at javax.swing.SwingWorker$1.call(SwingWorker.java:277) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
     at javax.swing.SwingWorker.run(SwingWorker.java:316) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: intradoc.data.DataException: !syParameterNotFound,dProcessingState 
     at intradoc.data.DataBinder.getEx(DataBinder.java:1258) 
     at intradoc.data.DataBinder.get(DataBinder.java:1057) 
     at intradoc.server.DocCommonHandler.getProcessingState(DocCommonHandler.java:277) 
     at intradoc.server.DocCommonHandler.getDocFormats(DocCommonHandler.java:184) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at intradoc.common.IdcMethodHolder.invokeMethod(IdcMethodHolder.java:87) 
     at intradoc.common.ClassHelperUtils.executeMethodReportStatus(ClassHelperUtils.java:324) 
     at intradoc.server.ServiceHandler.executeAction(ServiceHandler.java:79) 
     at intradoc.server.Service.doCodeEx(Service.java:622) 
     at intradoc.server.Service.doCode(Service.java:595) 
     ... 20 more 

追加サービスの呼び出し方法を複数試しました。

public DataBinder executeService(DataBinder binder, Workspace workspace) 
     throws DataException, ServiceException 
{ 
    final String serviceName = binder.getLocal(Services.IdcService); 

    //check for REMOTE_USER 
    String username = binder.getEnvironmentValue("REMOTE_USER"); 

    if (null == username || "".equals(username.trim()))   
    { 
    log.warn("username not found, searching the binder."); 
    try { username = binder.get("dUser"); } 
    catch (DataException de) { log.error("Unable to get Username.", de); } 
    if (null != username && !"".equals(username.trim()))    
    { binder.setEnvironmentValue("REMOTE_USER", username); } 
    else { throw new IllegalStateException("Username required!"); } 
    } 

    //clear idcToken 
    binder.getLocalData().remove("idcToken"); 

    log.info("About to run '" + serviceName + "' as '" + username +"'"); 

    try 
    { 
    log.info("Calling service " + serviceName + ": " 
      + binder.getLocalData().toString()); 
    // Execute service 
    service.createRequestImplementor(); 
    service.getRequestImplementor() 
      .executeServiceTopLevelSimple(binder, serviceName, 
              service.getUserData()); 
    log.info("Finished calling service"); 
    return service.getBinder(); 
    } 
    catch (DataException e) 
    { 
    String msg = "Unexpected Failure executing service '"+serviceName+"'"; 
    log.info(msg, e); 
    throw e; //log and duck 
    } 
} 

なぜdProcessingStateを見つけるWCCことができない、と私はそれをどのように修正すればよい:
現在私が使用していますか?

答えて

0

あなたのサービスを呼び出す方法はかなり標準的であり、私はそれが理由だとは思わない。私の最初の推測は、あなたの他のコードがあなたのDOC_INFO_BY_NAMEへの呼び出しを妨害していることです。あなたが他のすべてのカスタムコードを無効にした場合(たぶん簡単に言えば)、クリーンなコンポーネントでサービスを呼び出すと、うまくいくと思います。 2番目の候補は、カスタムサービスが実際にFileServiceであるべきかどうか再考することです。それが結果に影響を与えるかどうかは不明ですが、試してみる価値があります。

+0

私はIntradoc.server.FileServiceを使用していません。 'GetFileService'クラス名は歴史的です。 ** GET_FILE **と** DOC_INFO **の機能を1つのクラスにまとめたCIS/RIDC *版のものです。 – Raystorm

0

ほとんど私にとってバグのようです。

getProcessingStateは()はDOC_INFO *サービスから呼び出されたgetDocFormats()から呼び出されます。

getProcessingState()のコードは、最初にdProcessingStateを取得します。これがnullの場合

String curProcState = this.m_binder.get("dProcessingState"); 

その後、それはチェック:

if (curProcState != null) 

しかし、それはヌルチェックになることはありません。 DataBinder.get()が渡された任意のキーの値を要求されているためです(この場合dProcessingStateに。)

はサービスを呼び出す前のDataBinder内の値にdProcessingStateを設定しようとしています。

binder.setLocal("dProcessingState", "ignore"); 
+0

バインダーに追加すると、それ以外のものとは異なるエラーが発生します。 – Raystorm

0

問題は完全に私のせいでした。私は空想的にしようとしていたし、Databinderを私が使いやすくするために広げた。私の内線が間違っていたことが分かりました。 デフォルトにロールバックし、バインダー内の自分のデータをダブルチェックして固定しました。

関連する問題