私は PSI と Python を介して SharePoint と ProjectServer 2007 を使用しています。
フィルター クラス ( Microsoft.Office.Project.Server.Library )オブジェクトが内部で動作して Python でその動作をエミュレートする方法に関するドキュメントが見つかりません。
何か案は?
私は PSI と Python を介して SharePoint と ProjectServer 2007 を使用しています。
フィルター クラス ( Microsoft.Office.Project.Server.Library )オブジェクトが内部で動作して Python でその動作をエミュレートする方法に関するドキュメントが見つかりません。
何か案は?
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
これらの各フィルターを使用して関数を呼び出し、返されたデータテーブルをマージしています。