0
我正在通過PSI和Python一起使用SharePoint和ProjectServer 2007。使用Python中的PSI Filter對象
我找不到任何關於Filter Class (Microsoft.Office.Project.Server.Library)對象如何在內部工作以模擬其在Python中的行爲的文檔。
任何想法?
我正在通過PSI和Python一起使用SharePoint和ProjectServer 2007。使用Python中的PSI Filter對象
我找不到任何關於Filter Class (Microsoft.Office.Project.Server.Library)對象如何在內部工作以模擬其在Python中的行爲的文檔。
任何想法?
看看Colby Africa's blog post。另外,msdn docs are here。
編輯
所產生的過濾僅僅是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步:獲取排爲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>
它需要三個獨立的過濾器,因爲它是在三個單獨的表拆分獲得所有這些數據。在C#中,我使用這些過濾器中的每一個調用ReadLookupTablesMultiLang
函數,然後合併返回的數據表。
這裏的問題是我沒有所有這些方法來構建一個Filter對象(我正在使用Python)。 我認爲對我來說最好的解決方案可能是查看HTTP請求中發送的最終XML的語法,並從Python生成類似的東西。 – 2010-09-22 14:57:23
我已經更新了我的答案,以包含使用LookupTables時從示例中生成的XML。讓我知道如果這有幫助! – 2010-09-22 15:52:22
是啊!這就是我需要的!現在我將嘗試從Python生成正確的查詢。非常感謝! – 2010-09-24 09:44:12