1

私は PSI と Python を介して SharePoint と ProjectServer 2007 を使用しています。

フィルター クラス ( Microsoft.Office.Project.Server.Library )オブジェクトが内部で動作して Python でその動作をエミュレートする方法に関するドキュメントが見つかりません。

何か案は?

4

1 に答える 1

0

Colby Africa のブログ投稿をご覧ください。また、msdn ドキュメントはこちらにあります

編集

生成されたフィルターは単なる XML です。「LookupTables」テーブル (すべてのルックアップ テーブルのリスト) からデータを返すフィルターを次に示します。

<?xml version="1.0" encoding="utf-16"?>
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTables" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd">
  <Fields>
    <Field tableName="" fieldName="LT_UID" />
    <Field tableName="" fieldName="LT_NAME" />
    <Field tableName="" fieldName="LT_SORT_ORDER_ENUM" />
    <Field tableName="" fieldName="LT_PRIMARY_LCID" />
    <Field tableName="" fieldName="LT_FILL_ALL_LEVELS" />
    <Field tableName="" fieldName="LT_CHECKOUTBY" />
    <Field tableName="" fieldName="LT_CHECKOUTDATE" />
    <Field tableName="" fieldName="MOD_DATE" />
  </Fields>
  <Criteria />
</Filter>

1 つのテーブルのすべてのデータを取得するために必要なフィルターの別の例を次に示します...

ステップ 1: LookupTable の行を取得する (一般的なテーブル情報)

<?xml version="1.0" encoding="utf-16"?>
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTables" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd">
  <Fields>
    <Field tableName="" fieldName="LT_UID" />
    <Field tableName="" fieldName="LT_NAME" />
    <Field tableName="" fieldName="LT_SORT_ORDER_ENUM" />
    <Field tableName="" fieldName="LT_PRIMARY_LCID" />
    <Field tableName="" fieldName="LT_FILL_ALL_LEVELS" />
    <Field tableName="" fieldName="LT_CHECKOUTBY" />
    <Field tableName="" fieldName="LT_CHECKOUTDATE" />
    <Field tableName="" fieldName="MOD_DATE" />
  </Fields>
  <Criteria>
    <FieldOperator fieldOperationType="Equal">
      <Field fieldName="LT_UID" />
      <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand>
    </FieldOperator>
  </Criteria>
</Filter>

ステップ 2: LookupTableStructures テーブルからすべてのデータを取得する (階層情報)

<?xml version="1.0" encoding="utf-16"?>
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTableStructures" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd">
  <Fields>
    <Field tableName="" fieldName="LT_STRUCT_UID" />
    <Field tableName="" fieldName="LT_UID" />
    <Field tableName="" fieldName="LT_PARENT_STRUCT_UID" />
    <Field tableName="" fieldName="LT_STRUCT_COOKIE" />
  </Fields>
  <Criteria>
    <FieldOperator fieldOperationType="Equal">
      <Field fieldName="LT_UID" />
      <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand>
    </FieldOperator>
  </Criteria>
</Filter>

ステップ 3: このルックアップ テーブルのすべての値を取得する

<?xml version="1.0" encoding="utf-16"?>
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTableValues" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd">
  <Fields>
    <Field tableName="" fieldName="LT_STRUCT_UID" />
    <Field tableName="" fieldName="LCID" />
    <Field tableName="" fieldName="LT_UID" />
    <Field tableName="" fieldName="LT_VALUE_DUR" />
    <Field tableName="" fieldName="LT_VALUE_NUM" />
    <Field tableName="" fieldName="LT_VALUE_DUR_FMT" />
    <Field tableName="" fieldName="LT_VALUE_DATE" />
    <Field tableName="" fieldName="LT_VALUE_TEXT" />
    <Field tableName="" fieldName="LT_VALUE_PHONETIC" />
    <Field tableName="" fieldName="LT_VALUE_FULL" />
    <Field tableName="" fieldName="LT_VALUE_DESC" />
    <Field tableName="" fieldName="LT_VALUE_SORT_INDEX" />
    <Field tableName="" fieldName="LT_VALUE_LOCALIZED_COOKIE" />
  </Fields>
  <Criteria>
    <FieldOperator fieldOperationType="Equal">
      <Field fieldName="LT_UID" />
      <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand>
    </FieldOperator>
  </Criteria>
</Filter>

このデータは 3 つの個別のテーブルに分割されているため、このデータをすべて取得するには 3 つの個別のフィルターが必要です。C# では、ReadLookupTablesMultiLangこれらの各フィルターを使用して関数を呼び出し、返されたデータテーブルをマージしています。

于 2010-09-22T13:54:12.920 に答える