0

API を介して primavera UDF を追加するサンプルを見つけることができる人を知っていますか? 私のコードは以下にありますが、実行しても何も起こりません。データベースへの接続、UDF の読み取り、UDF の削除はできますが、作成はできません

ありがとうございました

package apitest;

  import com.primavera.bo.base.u;
  import com.primavera.common.value.ObjectId;
  import com.primavera.integration.client.*;
  import com.primavera.integration.client.Session;
  import com.primavera.integration.client.EnterpriseLoadManager;
  import com.primavera.integration.client.RMIURL;
  import com.primavera.integration.common.DatabaseInstance;
  import com.primavera.integration.client.bo.BOIterator;
  import com.primavera.integration.client.bo.object.Project;
  import com.primavera.integration.client.bo.object.UDFCode;
  import com.primavera.integration.client.bo.InternalBOHelper;
  import com.primavera.integration.client.bo.helper.UDFCodeHelper;
  public class API
  {

 public static void main( String[] args )
{
    System.setProperty("primavera.bootstrap.home","C:\\P6IntegrationAPI_1");
    Session session = null;
    try
    {
        DatabaseInstance[] dbInstances = Session.getDatabaseInstances(
            RMIURL.getRmiUrl( RMIURL.LOCAL_SERVICE ) );

        // Assume only one database instance for now, and hardcode the username and
        // password for this sample code
        session = Session.login( RMIURL.getRmiUrl( RMIURL.LOCAL_SERVICE ),
            dbInstances[0].getDatabaseId(), "admin", "admin" );


        //u.delete(session, (UDFCode)(new String ("High")));

        UDFCode u = new UDFCode(session);

        u.setCodeValue("cdc");
        u.setDescription("cdcds");    
        u.setObjectId(ObjectId.USESSION_OVERRIDE_ID);
        u.setCodeTypeObjectId(ObjectId.USESSION_OVERRIDE_ID);
        u.setSequenceNumber(0);

        u.create();            


        System.out.println("cdcx");


    }
    catch ( Exception e )
    {
        System.out.println(e.getCause());
    }
    finally
    {
        if ( session != null )
            session.logout();
    }
}

}

4

2 に答える 2

0

P6 の UDF フィールドは、実際には 3 種類のテーブル/クラスです。

  1. UdfType - UDF のタイプ (名前、データ型など)
  2. UdfValue - これは、設定したい実際の値だと思いますか?
  3. UdfCodes - これは UserDefined Codes なので、少し複雑で、実際には Code であり、Field ではありません!

したがって、単純な UDF が必要な場合は、UdfType を作成するだけです。これはグローバルデータの一部であり、値を追加する前に存在する必要があります。クライアント/Web を介して追加し、後で値を入力することもできます。

次に、いくつかの UdfValues をアクティビティに挿入してみます。それは私がいつも行く方法です;)

于 2014-02-10T16:45:29.053 に答える
0

次のテンプレート コードを使用して DB に接続します。使用する前に、ブートストラップ、ユーザー名、パスワードの値を変更してください。

import java.util.Date;
import java.util.Iterator;
import com.primavera.PrimaveraException;
import com.primavera.ServerException;
import com.primavera.bo.events.enm.SpreadPeriodType;
import com.primavera.common.value.Duration;
import com.primavera.common.value.ObjectId;
import com.primavera.common.value.spread.ActivitySpread;
import com.primavera.common.value.spread.ActivitySpreadPeriod;
import com.primavera.integration.client.GlobalObjectManager;
import com.primavera.integration.client.Session;
import com.primavera.integration.client.bo.BOIterator;
import com.primavera.integration.client.bo.BusinessObjectException;
import com.primavera.integration.client.bo.enm.ActivityStatus;
import com.primavera.integration.client.bo.enm.ProjectStatus;
import com.primavera.integration.client.bo.object.Activity;
import com.primavera.integration.client.bo.object.ActivityNote;
import com.primavera.integration.client.bo.object.EPS;
import com.primavera.integration.client.bo.object.NotebookTopic;
import com.primavera.integration.client.bo.object.Project;
import com.primavera.integration.client.bo.object.BaselineProject;
import com.primavera.integration.common.CopyActivityOptions;
import com.primavera.integration.common.CopyProjectOptions;
import com.primavera.integration.common.CopyWBSOptions;
import com.primavera.integration.common.DatabaseInstance;
import com.primavera.integration.client.bo.object.*;
import com.primavera.integration.client.*;
import com.primavera.integration.network.NetworkException;
import com.primavera.integration.*;


public class EPSFilter {

    static Session session = null;
    //static Session session = null;
     private static final String PRIMAVERA_BOOTSTRAP_HOME = "primavera.bootstrap.home";
    static final String PRIMAVERA_BOOTSTRAP_HOME_VALUE = "C:\\P6EPPM_832\\p6";
    static final String PRIMAVERA_USERNAME = "admin";
    static final String PRIMAVERA_PASSWORD = "admin";
    static final String PRIMAVERA_SYSTEM = "pmdb832_n1";

    static void openSession() throws PrimaveraException {
        for (DatabaseInstance dbi : Session.getDatabaseInstances(null)) {
          if (PRIMAVERA_SYSTEM.equalsIgnoreCase(dbi.getDatabaseName())) {

            session = Session.login(null, dbi.getDatabaseId(), PRIMAVERA_USERNAME, PRIMAVERA_PASSWORD);
            //session = Session.login (RMIURL.getRmiUrl( RMIURL.LOCAL_SERVICE ), "1", "admin", "admin");
            System.out.println("Connected to Primavera instance " + PRIMAVERA_SYSTEM);
            return;
          }
        }
        throw new RuntimeException("Error, Primavera instance " + PRIMAVERA_SYSTEM + " not found");
      }



    public static void main(String[] args) throws BusinessObjectException, ServerException, NetworkException {

         try {
             System.setProperty(PRIMAVERA_BOOTSTRAP_HOME, PRIMAVERA_BOOTSTRAP_HOME_VALUE);
            openSession();
        } catch (PrimaveraException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

UDF を作成するには、コードに従う必要があります。それでも問題が発生する場合。発生しているエラーを投稿してください

于 2014-09-19T12:09:11.057 に答える