• NDS.ENDO
  • NEWBIE
  • 25 Points
  • Member since 2010

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 5
    Questions
  • 4
    Replies

夜中など特定の時間にAPEXによるバッチ処理を実行したい際、

下記のよう親処理から子処理(バッチ処理1⇒バッチ処理2)を順番に実行しよう記述しましたが、

バッチ処理1の終了を待たず、バッチ処理2が実行されてしまいます。

(思い違いかもしれませんが)

これを回避するには、どうしたら良いでしょうか。

 

 

global class BatchDailyCall implements Schedulable {

    /* 日次バッチの起動 */
    global void execute(SchedulableContext sc) {

        // バッチ処理1
        BatchDaily1 Daily1 = new BatchDaily1();
        Database.executeBatch(Daily1);

        // バッチ処理2
        BatchDaily2 Daily2 = new BatchDaily2();
        Database.executeBatch(Daily2);

    }

Data Loader(バッチ処理)を使い、Sandboxにログインしたいのですが、

どうすれば良いか、どなたかご存じの方がおられましたらご教授お願いいたします。

 

Data Loaderのバッチ化は、Data LoaderのCLIqを用い、各種定義ファイルを生成しております。

 

一旦、実運用向けに接続(ログイン)するかたちで定義ファイルを生成し、その後、process-conf.xml

の記述内容をSandboxに接続(ログイン)するよう書き換えました。

 

-実運用ログイン-

<entry key="sfdc.endpoint" value="https://www.salesforce.com/services/Soap/u/18.0"/>

 

<entry key="sfdc.password" value="90dc240decd5fe981c4d05fc81d23989"/>

<entry key="sfdc.password" value="password"/>

 

<entry key="sfdc.username" value="xxxxx@xx.yy.zz"/>

 

-Sandboxログイン-

<entry key="sfdc.endpoint" value="https://test.salesforce.com/services/Soap/u/18.0"/>

<entry key="sfdc.password" value="password"/>

<entry key="sfdc.username" value="xxxxx@xx.yy.zz.sandbox"/>

 

上記のように書き換える事で、エクスポート処理はSandboxにログイン(エキスポートも)出来ましたが、

インポート(インサート/アップデート/アップサート/デリート)では、Sandboxにログイン出来ませんでした。

DOS画面に表示されるログを見ると、Sandboxのユーザーで実運用環境(www.salesforce.com〜)へ

ログインしようしております。

 

Data Loader(バッチ処理)でSandboxにログインするにはどうすれば良いか判るかたがおられましたら、

ご教示お願いいたします。

(あるいは、これは仕様なのか、バグなのか...)

WFRの項目自動更新を利用して参照項目の初期化を行いたいのですが、項目自動更新の候補に参照項目は出て来ません。

これは、出来ないという事でしようか ?。

だとすれば、何か他の方法はないでしようか。

 

リストビューよりPDF出力したいレコードを選択し、

VisualForceページのrenderas機能を使い、PDF出力(単票形式:複数ページ)し、

且つ、PDFに出力したレコードに対し、レコード更新(PDF出力済フラグをtrue)したい

と思っております。

 

update処理で、DML currently not allowedのエラーが発生し、異常終了してしまいます。

 

updateの処理をコメントアウトすると、正常にPDF出力(複数ページ)されます。

 

PDF出力とレコード更新は同時に出来ないのでしょうか。

あるいは、上記エラーが発生する原因としてどのような事が考えられるでしょうか。

当方、まだまだ素人の域をでておりませんが、

Visualfoceを用い、カスタムオブジェクトに登録されている、あるレコードの内容をPDF出力を試みています。

この際、extensions(APEX)で編集した内容をVisualfoce(PDF)へ出力したいと思っていますが、

思い通りに行きません。

 

処理を実行すると、

Illegal view ID 笆。 遉セ蜀�イゥ菫�シ医Ο繝シ繝ゥ繝シ遲会シ峨縲笆 蟇セ螟悶く繝」繝ウ繝壹�繝ウ縲縲笆。 蟇セ螟 繧、繝吶Φ繝. The ID must begin with /

と言うエラーになります。

 

 

extensions(APEX)側の処理はうまく行っているように思えます。

ページ(PDF)表示する際、文字化けしていますが、

"■ 社内販促  □ 対外キャンペーン  □ 対外 イベント"の結果を戻しているようです。

 

 

何がいけないのでしょうか。

 

-----Visualforceページ-----

 

 

<apex:page standardController="SalesPromotion__c"  extensions="SalesPromotionApplForm_ExCtl2" showHeader="false" renderAs="pdf" 
    action="{!getLine}">

 

  <table>

    <tr>

      <td > {!Line}

    </tr>

  </table>

 

-----extensions-----

 

 

public class SalesPromotionApplForm_ExCtl2 {

 

    /** 選択中のレコード */

    private SalesPromotion__c SalesPromotion;

    public String Line;

 

    public SalesPromotionApplForm_ExCtl2(ApexPages.StandardController controller) {

        this.SalesPromotion = (SalesPromotion__c) controller.getRecord();

    }

 

    public String getLine() {

 

        String soql = Helper.createSOQL(SalesPromotion.getSObjectType());

        soql += ' Where Id = \'' + SalesPromotion.Id + '\'';

        SalesPromotion = Database.query(soql);

 

        if(SalesPromotion.salesPromotion_Division__c =='社内販促'){

            Line = '■ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        } else {

            Line = '□ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        }

    return Line;

    }

 

}

 

Data Loader(バッチ処理)を使い、Sandboxにログインしたいのですが、

どうすれば良いか、どなたかご存じの方がおられましたらご教授お願いいたします。

 

Data Loaderのバッチ化は、Data LoaderのCLIqを用い、各種定義ファイルを生成しております。

 

一旦、実運用向けに接続(ログイン)するかたちで定義ファイルを生成し、その後、process-conf.xml

の記述内容をSandboxに接続(ログイン)するよう書き換えました。

 

-実運用ログイン-

<entry key="sfdc.endpoint" value="https://www.salesforce.com/services/Soap/u/18.0"/>

 

<entry key="sfdc.password" value="90dc240decd5fe981c4d05fc81d23989"/>

<entry key="sfdc.password" value="password"/>

 

<entry key="sfdc.username" value="xxxxx@xx.yy.zz"/>

 

-Sandboxログイン-

<entry key="sfdc.endpoint" value="https://test.salesforce.com/services/Soap/u/18.0"/>

<entry key="sfdc.password" value="password"/>

<entry key="sfdc.username" value="xxxxx@xx.yy.zz.sandbox"/>

 

上記のように書き換える事で、エクスポート処理はSandboxにログイン(エキスポートも)出来ましたが、

インポート(インサート/アップデート/アップサート/デリート)では、Sandboxにログイン出来ませんでした。

DOS画面に表示されるログを見ると、Sandboxのユーザーで実運用環境(www.salesforce.com〜)へ

ログインしようしております。

 

Data Loader(バッチ処理)でSandboxにログインするにはどうすれば良いか判るかたがおられましたら、

ご教示お願いいたします。

(あるいは、これは仕様なのか、バグなのか...)

リストビューよりPDF出力したいレコードを選択し、

VisualForceページのrenderas機能を使い、PDF出力(単票形式:複数ページ)し、

且つ、PDFに出力したレコードに対し、レコード更新(PDF出力済フラグをtrue)したい

と思っております。

 

update処理で、DML currently not allowedのエラーが発生し、異常終了してしまいます。

 

updateの処理をコメントアウトすると、正常にPDF出力(複数ページ)されます。

 

PDF出力とレコード更新は同時に出来ないのでしょうか。

あるいは、上記エラーが発生する原因としてどのような事が考えられるでしょうか。

当方、まだまだ素人の域をでておりませんが、

Visualfoceを用い、カスタムオブジェクトに登録されている、あるレコードの内容をPDF出力を試みています。

この際、extensions(APEX)で編集した内容をVisualfoce(PDF)へ出力したいと思っていますが、

思い通りに行きません。

 

処理を実行すると、

Illegal view ID 笆。 遉セ蜀�イゥ菫�シ医Ο繝シ繝ゥ繝シ遲会シ峨縲笆 蟇セ螟悶く繝」繝ウ繝壹�繝ウ縲縲笆。 蟇セ螟 繧、繝吶Φ繝. The ID must begin with /

と言うエラーになります。

 

 

extensions(APEX)側の処理はうまく行っているように思えます。

ページ(PDF)表示する際、文字化けしていますが、

"■ 社内販促  □ 対外キャンペーン  □ 対外 イベント"の結果を戻しているようです。

 

 

何がいけないのでしょうか。

 

-----Visualforceページ-----

 

 

<apex:page standardController="SalesPromotion__c"  extensions="SalesPromotionApplForm_ExCtl2" showHeader="false" renderAs="pdf" 
    action="{!getLine}">

 

  <table>

    <tr>

      <td > {!Line}

    </tr>

  </table>

 

-----extensions-----

 

 

public class SalesPromotionApplForm_ExCtl2 {

 

    /** 選択中のレコード */

    private SalesPromotion__c SalesPromotion;

    public String Line;

 

    public SalesPromotionApplForm_ExCtl2(ApexPages.StandardController controller) {

        this.SalesPromotion = (SalesPromotion__c) controller.getRecord();

    }

 

    public String getLine() {

 

        String soql = Helper.createSOQL(SalesPromotion.getSObjectType());

        soql += ' Where Id = \'' + SalesPromotion.Id + '\'';

        SalesPromotion = Database.query(soql);

 

        if(SalesPromotion.salesPromotion_Division__c =='社内販促'){

            Line = '■ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        } else {

            Line = '□ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        }

    return Line;

    }

 

}