3.1 使用規則

Identity Manager Driver for GroupWise 會透過一系列規則同步化來自 eDirectory 的資料和事件。 規則能協助 Identity Manager 在文件橫跨通道時做出決定。 規則可能會決定文件須先進行某種轉換,才能繼續進行至目的地。 例如,「建立」規則會指定「使用者」物件必須擁有 CN 屬性的值,如此該規則便不允許在沒有 CN 值的情況下嘗試建立「使用者」物件。

本節中的規則將為您示範多種可能適用於貴公司業務規則的解決方案。 程式碼段落只會顯示簡單的部份解決方案,且並未涵蓋所有情況及條件。 此外,程式碼段落僅處理涉及的屬性,而不會處理其他屬性。

3.1.1 預設的驅動程式動作

根據預設,驅動程式會執行數個動作︰

  • 使用者的 eDirectory 公用名稱 (Common Name,CN) 用於做為建立 GroupWise 帳戶時的 GroupWise MailboxID。
  • 驅動程式組態會使用單一郵局。 所有帳戶都會在單一郵局中建立。

3.1.2 修改規則和過濾器中的預設設定

規則和過濾器的預設值設定會在輸入驅動程式組態時進行。 如果您要變更驅動程式的預設行為,建議您按照此順序進行修改︰

  1. 修改驅動程式過濾器,以包含要同步化的其他屬性。 如需相關資訊,請參閱修改驅動程式過濾器
  2. 修改「綱要映射」規則,以包含要同步化的所有屬性。 如需相關資訊,請參閱新增項目至綱要映射規則
  3. 修改「訂閱者建立」規則。 如需相關資訊,請參閱修改建立規則
  4. 修改「訂閱者佈置」規則。 請參閱修改規則

修改驅動程式過濾器

驅動程式過濾器包含「發行者」和「訂閱者」通道的 eDirectory 類別和屬性。 過濾器的目的在於定義系統之間共享屬性的方式。 驅動程式過濾器中的所有屬性均為處理時所需,因此您不應移除過濾器中的屬性。

不過,您可以在過濾器中新增項目。 如果您新增類別或屬性至過濾器,則應附加 “merge-authority” 字串至「映射」規則中新增的屬性。

例如:

<filter-attr attr-name="Description" merge-authority="edir" publisher="ignore" subscriber="sync"/>

新增項目至綱要映射規則

「綱要映射」規則包含在驅動程式物件中,並且會同時套用至「訂閱者」和「發行者」通道。 「綱要映射」規則的目的在於映射 eDirectory 名稱空間與 GroupWise 名稱空間之間的綱要名稱 (尤其是屬性名稱和類別名稱)。 請勿修改或移除「綱要映射」規則中現有的項目。 不過,您可以新增項目至「綱要映射」規則。

修改建立規則

您可以修改「建立」規則,以實作您的特定業務規則。 「建立」規則會決定是否建立 GroupWise 帳戶。 「建立」規則還可以對「新增」事件執行其他修改,例如提供屬性的預設值。

在驅動程式組態中,「建立」規則會指定兩項必要的屬性︰ CN 和 Surname。

規則會由將啟始密碼設為 Surname 和 CN 的全域組態值 (GCV) 控制。 如需全域組態值 (GCV) 的相關資訊,請參閱Section 3.1.3, 了解全域組態值

修改相符規則

「相符」規則會定義判定兩個物件為相同物件時必須符合的最低準則。 建議您不要變更預設的「相符」規則。

3.1.3 了解全域組態值

全域組態值 (GCV) 是與驅動程式參數類似的新設定。 您可以針對驅動程式集和個別驅動程式指定全域組態值。 如果驅動程式沒有全域組態值 (GCV),則會從驅動程式集承襲該 GCV。 全域組態值 (GCV) 可讓您指定 Identity Manager 新功能 (例如密碼同步化和驅動程式活動訊號) 的設定,以及 GroupWise 驅動程式專屬設定。 如需相關資訊,請參閱《Novell Identity Manager 3.0 管理指南》中的「使用全域組態值」。

3.1.4 修改規則

您可以修改現有的驅動程式規則,以執行額外的功能。

指定 GroupWise 郵局

在預設狀態下,「GroupWise 訂閱者佈置」規則會將所有新使用者放入同一個郵局。 「佈置」規則還可以根據屬性值或 eDirectory 使用者容器決定郵局。

以下範例是在「規則產生器」中建立,且會根據建立使用者之處的 eDirectory 容器指定郵局。

Figure 3-1 根據 eDirectory 容器指定郵局的佈置規則

下圖說明將「銷售」容器中的使用者放入 PO1 以及將「工程」容器中的使用者放入 PO2 所需的規則。

Figure 3-2 將使用者放入不同容器的佈置規則

指定配送清單

組織會用配送清單來確認不同內部通訊中都包含相關人士。只要可能,組織都應自動將新員工指定至這些配送清單,讓新員工能夠立即加入相關的通訊。

若在建立 eDirectory 使用者時使用「訂閱者建立」規則,則可將 GroupWise 帳戶新增至以 eDirectory 容器為基礎的配送清單。 若在「銷售」容器中建立使用者,使用者會新增至「銷售配送清單」。 若在「工程」容器中建立使用者,則使用者會新增至「工程配送清單」。

本節中的規則是使用「規則產生器」所建立,且會說明如何設定下列動作︰

若使用「規則產生器」,您可以使用這些範例針對您的業務規則 (Rule) 和環境建立類似的規則 (Policy) 和「配送清單」。

根據使用者的 eDirectory 容器建立新使用者做為配送清單的成員

Figure 3-3 建立規則

新增使用者做為配送清單的隱藏副本或副本參與者

使用者會加入配送清單,成為主要、隱藏副本或副本成員。 gw:participation=“bc” 和 gw:participation=“cc” 的 XML 屬性用於設定使用者在配送清單中擁有的成員資格類型。 如果未指定這些屬性,則會預設為主要。

<modify-attr attr-name="Distribution List DN" xmlns:gw="http://www.novel.com/dirxml/gwdriver" gw:participation="bc"> <add-value> <value type="string">\IDMTREE\Novell\Users\cDL1</value> <value type="string">\IDMTREE\Novell\Users\cG1</value> </add-value> </modify-attr>

<add-attr attr-name="Distribution List DN xmlns:gw="http://www.novell.com/dirxml/gwdriver" gw:participation="bc"> <value type="string">\IDMTREE\Novell\Users\cDL1</value> <value type="string">\IDMTREE\Novell\Users\cG1</value> </add -attr>

若要新增使用者做為副本成員,請以 gw:participation=“cc” 取代 gw:participation=”bc” 屬性。

使用者成為經理時將其新增至配送清單

Figure 3-4 新增使用者至配送清單

當使用者不再是經理時即從配送清單移除使用者

Figure 3-5 從配送清單移除使用者

從所有配送清單移除使用者

Figure 3-6 從所有配送清單移除使用者

從配送清單移除使用者時,驅動程式會清除相關群組物件中的 Member 屬性。

設定 GroupWise 屬性的預設值

其他屬性可在 GroupWise 帳戶中使用「建立」規則設定。 某些屬性必須同時在 eDirectory 和 GroupWise 中設定。 當 eDirectory 使用者物件包含對應的屬性時,則必須設定該屬性。 因此請務必同時在 eDirectory 和 GroupWise 中設定屬性值。 如果僅在 GroupWise 中設定屬性,則可能會被 eDirectory 中的值覆寫。 您必須自定讓驅動程式更新 eDirectory 中的值;在預設狀態下,驅動程式不會執行這項操作。

以下範例說明在 eDirectory 和 GroupWise 中設定 Description 屬性 (Visibility 是另一個常用屬性)。 屬性 write-back = “true” 會讓屬性同時寫入 eDirectory。

<?xml version="1.0" encoding="UTF-8"?> <create-rules> <create-rule class-name="User" description="GroupWise Account Required Attributes"> <!-- Description attribute is given a default value in both eDirectory and in GroupWise --> <required-attr attr-name="Description" write-back="true"> <value type="String"><![CDATA[eDirectory User synchronized by GroupWise Driver]]></value> </required-attr> </create-rule> </create-rules>

設定 GroupWise UserID

eDirectory 中的 CN 屬性用於命名 GroupWise 帳戶。 您必須在「建立」規則中包含此項做為必要屬性。 在「訂閱者建立」規則中可忽略 eDirectory 中的 CN 值,並且可以產生以其他屬性為基礎的 CN。 下面會為您示範「建立」規則中的程式碼段落。 如果您修改此規則,則亦需要修改來自引擎的修改事件。

當用來建構公用名稱 (CN) 的屬性經過修改時,「GroupWise 重新命名」事件便應透過規則產生。 UserID 在郵局中必須是唯一的。 如果 UserID 用來產生 Internet EMail Address,則其在整個 GroupWise 系統中都必須是唯一的。 UserID 包含 1 到 256 個字元,且不可包含下列字元︰ ( ) @ . : , { } * ". UserID 在其名稱空間內必須是唯一的 (UserID 與綽號、資源和配送清單共用相同的名稱空間)。請勿針對這個值使用 “mapi” (保留的 ID)。

「輸出轉換」或「事件轉換」規則可監視用來建立公用名稱 (CN) 的屬性。 如果其中一個屬性改變,則應同樣產生「重新命名」事件。 此處使用的任何屬性都需新增至必要屬性的清單。 在此情況下,「重新命名」事件仍應轉遞至包含空的 <newname> 元素的驅動程式。 如需相關資訊,請參閱重新命名使用者

<!--CN is used to set the GroupWise UserID. Construct a new CN from Given Name. --><xsl:template match="add-attr[@attr-name = ’CN’]"> <!-- ignore the current CN and create a new one --> <add-attr attr-name="CN"> <value type="string"> <xsl:value-of select="../add-attr[@attr-name=’Given Name’]/value"/> </value> </add-attr> </xsl:template>

針對其他屬性建立映射

您可以將能夠在 eDirectory 中以字串代表的任何屬性,與二十個 GroupWise 一般屬性 (但不包括八進位字串和結構化屬性) 的其中一個同步化。 然後指定您想要在過濾器中映射的 eDirectory 屬性。 此外,在「綱要映射」規則中,eDirectory 和 GroupWise 屬性名稱必須連接。

以下「綱要映射」規則程式碼段落會連接 eDirectory 屬性 Location 與 GroupWise 屬性 55003。

<attr-name class-name="User"> <nds-name>Location</nds-name> <app-name>55003</app-name> </attr-name>

這二十個 GroupWise 屬性名稱為 50106 到 50115 以及 55002 到 55011。您可以透過 GroupWise 嵌入式管理單元指定通訊錄標籤給這些 GroupWise 屬性。 您在 GroupWise 中設定的映射應該要和驅動程式映射中所設定的一樣。

取得查詢的記錄計數

下列為傳送至驅動程式的查詢,且會傳回 dom1.po1 中的使用者數目。

<nds dtdversion="1.1" ndsversion="8.6"> <input> <query event-id="query-groupwise" scope="subtree"> <search-class class-name="User"/>

                 		<!-- Referenced Domain Name --> <search-attr attr-name="50035"> <value>dom1</value> </search-attr>

                 		<!-- Referenced Post Office Name --> <search-attr attr-name="50062"> <value>po1</value> <search-attr>

                 		<!-- return Record Count--> <read-attr attr-name="Record Count"/> </query> </input> </nds>

如果您移除郵局搜尋屬性,則會傳回 dom1 中的使用者數目。如果您移除領域搜尋屬性,則會傳回系統中的使用者數目。 此搜尋可加以修改,以套用至其他搜尋準則。

刪除 GroupWise 使用者但不刪除 eDirectory 使用者

刪除 GroupWise 中的使用者之後,驅動程式會清除 eDirectory 中的 GroupWise 屬性。 此結果會與使用 GroupWise 嵌入式管理單元刪除使用者,以及僅從 GroupWise 選取「刪除」相同。

您需變更相符準則,以符合您的環境需要。

<!-- delete the GroupWise user and clean up eDirectory when the eDirectory user has not been deleted --> <xsl:template match="modify[@class-name=’User’ and modify-attr[@attr-name=’50000’]]"> <delete xmlns:gw="http://www.novell.com/dirxml/gwdriver" gw:original-event="modify"> <!-- copy event attributes and association --> <xsl:apply-templates select="@*|association"/> </delete> </xsl:template>

建立 GroupWise 綽號

GroupWise 綽號可以在重新命名 eDirectory 使用者,或移動 GroupWise 帳戶時自動建立。 此操作會在驅動程式上,於 iManager 中透過「全域組態值 (GCV)」頁面控制。 當您將此選項設為 True 時,便會在發生 eDirectory 重新命名或移動 GroupWise 帳戶時自動建立綽號。 若您將此選項設為 False,則不會建立綽號。 建立綽號需要執行 GroupWise 6.5 SP1 或更新版本的代辦。您可以新增程式碼至「輸出轉換」規則來指定是否應建立綽號,藉此覆蓋此選項。

<!--Override the "Create Nicknames" Driver Option--> <xsl:template match="rename"> <xsl:copy> <!-- Create a GroupWise nickname. --> <xsl:attribute xmlns:gw="http://www.novell.com/dirxml/gwdriver" name="gw:create-nickname">true</xsl:attribute> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template>

建立 GroupWise 綽號記錄

以下會示範兩種建立綽號記錄的方式。 第一種方式是指定郵局,綽號會在郵局的 <dest-dn> (此暗示領域) 屬性中建立。 第二種方式則是使用 <add-attr> 節點指定領域和郵局。

綽號可包含 1 到 256 個字元,但不可包含下列字元︰ ()@.:,{}*". 綽號在其名稱空間內必須是唯一的 (綽號與使用者、資源和配送清單共用相同的名稱空間)。

                                <add class-name="GroupWise Nickname" dest-dn="Novell\dirxml\groupwise\xmlPO" event-id="0" > <!-- Domain of user this nickname refers to --> <add-attr attr-name="50068" > <value type="string">xmlDom</value> </add-attr> <!-- Post Office of user this nickname refers to  --> <add-attr attr-name="50069" > <value type="string">xmlPO</value> </add-attr> <!--  user this nickname refers to  --> <add-attr attr-name="50070" > <value type="string">Usern1</value> </add-attr>

      	<!-- name of nickname record --> <add-attr attr-name="50073" > <value type="string">nn1</value> </add-attr> </add>

OR

<add class-name="GroupWise Nickname" event-id="0" > <!-- Domain of user this nickname refers to --> <add-attr attr-name="50068" > <value type="string">xmlDom</value> </add-attr> <!-- Post Office of user this nickname refers to --> <add-attr attr-name="50069" > <value type="string">xmlPO</value> </add-attr> <!-- user this nickname refers to --> <add-attr attr-name="50070" > <value type="string">Usern1</value> </add-attr>

       	<!-- Domain of nickname record --> <add-attr attr-name="50035" > <value type="string">xmlDom</value> </add-attr> <!-- Post Office of nickname record --> <add-attr attr-name="50062" > <value type="string">xmlPO</value> </add-attr> <!-- name of nickname record --> <add-attr attr-name="50073" > <value type="string">nn1</value> </add-attr> </add>

刪除擁有者時指定新的資源擁有者

刪除資源 (如會議室) 的擁有者時,驅動程式會自動將該資源指定給另一個擁有者。 您必須指定所有資源指定的預設使用者。 指定資源時,如果驅動程式未偵測到任何使用者帳戶,則會建立預設使用者帳戶並指定資源給該使用者。

您可以透過規則指定置換的擁有者。 若使用「輸出轉換」規則,則會選取刪除 eDirectory 使用者。 gw:resource-owner-dn 這個特殊屬性用於通知 Shim 有關置換資源擁有者的資訊。 此特殊屬性是在 <delete> 元素上指定。 只要發生刪除操作時,就會重新指定資源。 新的擁有者必須已在 GroupWise 中,並且與刪除的使用者位於同一個郵局中。 如果使用置換的擁有者時發生錯誤,資源就會自動指定給驅動程式選項中所指定的預設使用者。 XSLT 程式碼段落為︰

<!-- User Delete Reassigns GroupWise Resource On an eDirectory User delete specify the GroupWise Account to reassign the GW resources to. --> <xsl:template match="delete[@class-name=’User’]"> <!-- copy the delete through --> <xsl:copy> <!-- Specify the override resource owner on the <delete> --> <xsl:attribute xmlns:gw="http://www.novell.com/dirxml/gwdriver" name="gw:resource-owner-dn">\GWDRIVERTREE\novell\users\sales\ResourceOwner</xsl:attribute> <!-- copy the rest of the stuff through --> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template>

擁有者停用或過期時指定新的資源擁有者

如果資源 (如會議室) 擁有者已停用或過期,您可以使用全域組態值 (GCV) 設定讓驅動程式自動指定該資源給另一個擁有者 (使用 GCV)。在此程序中,您可以為所有資源指定預設的使用者。 重新指定資源時,如果驅動程式未偵測到任何預設使用者帳戶,則只有在「重新指定資源擁有權」驅動程式全域組態值 (GCV) 設為「True」時,才會建立預設使用者帳戶並將其指定為資源擁有者。

當 eDirectory User Login Disabled 屬性設定後,停用或過期帳戶的 GroupWise 資源可以指定給另一個 GroupWise 帳戶。 一般而言,新的擁有者是在「預設資源擁有者 UserID」參數中指定的預設使用者。 置換的擁有者可以透過樣式表指定。 若使用「輸出轉換」樣式表,則會選取禁止登入 eDirectory 使用者。 gw:resource-owner-dn 這個特殊屬性用於通知 Shim 有關置換資源擁有者的資訊。 此特殊屬性是在 <modify-attr> 元素中指定。

即使「重新指定資源擁有權」全域組態值 (GCV) 設為「False」,資源仍會指定給置換的擁有者。 新的擁有者必須已在 GroupWise 中,並且與過期的使用者位於同一個郵局中。 如果使用置換的擁有者時發生錯誤,資源就會自動指定給「驅動程式選項」中所指定的預設使用者。 執行停用或過期的 XSLT 程式碼段落為︰

<!-- When a GroupWise Account is Disabled also specify the GroupWise Account to reassign the GW resources to.--> <xsl:template match="modify-attr[@attr-name=’50058’]"> <!-- When Login Disabled is true, reassign the resource --> <xsl:if test="add-value//value[.=’true’]"> <!-- copy the modify through --> <xsl:copy> <!-- Specify the override resource owner on the <modify-attr> --> <xsl:attribute xmlns:gw=http://www.novell.com/dirxml/gwdriver name="gw:resource-owner-dn">\GWDRIVERTREE\novell\users\sales\ResourceOwner</xsl:attribute> <!-- copy the rest of the stuff through --> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:if> </xsl:template>

<!-- User Expire to GroupWise Expire and Reassign GroupWise Resources When the eDirectory User Login Expiration Time attribute is modified, change the GroupWise Mailbox Expiration Time and specify the GroupWise Account to reassign the GroupWise resources to. --> <xsl:template match="modify-attr[@attr-name=’Login Expiration Time’]"> <!-- copy the modify through --> <xsl:copy> <!-- copy all attributes through except for the attr-name --> <!-- we’ll construct the GroupWise attr-name below --> <xsl:apply-templates select="@*[name(.) != ’attr-name’]"/> <!-- now create the attr-name attribute with the GroupWise name --> <xsl:attribute name="attr-name">50138</xsl:attribute> <!-- Specify the override resource owner on the <modify-attr> --> <xsl:attribute name="gw:resource-owner-dn" xmlns:gw="http://www.novell.com/dirxml gwdriver">\GWDRIVERTREE\novell\users\sales\ResourceOwner</xsl:attribute> <!-- copy the rest of the stuff through, except for what we have already copied--> <xsl:apply-templates select="* | comment() | processing-instruction() | text()"/> </xsl:copy> </xsl:template>

控制 GroupWise 帳戶的建立

某些情況下,您可能只想建立 eDirectory 使用者,而不想建立對應的 GroupWise 帳戶。 此外,並非所有 eDirectory 使用者一開始即擁有 GroupWise 帳戶。 您可以使用驅動程式控制 GroupWise 帳戶的建立。

控制建立帳戶的建議方式為定義是否建立 GroupWise 帳戶,例如藉由使用 createGroupWiseAccount 屬性即是一種方式。

eDirectory 綱要必須加以延伸,才能納入 createGroupWiseAccount 屬性。 當 createGroupWiseAccount 屬性設為 true 時,便會建立 GroupWise 帳戶。 當 createGroupWiseAccount 屬性設為 false 時,則不會建立 GroupWise 帳戶。 若將值從 false 變更為 true,便會建立 GroupWise 帳戶。

createGroupWiseAccount 屬性必須新增至「建立」規則做為必要屬性,且亦須新增至「訂閱者過濾器」。

<!-- createGroupWiseAccount is used to control creation of the GroupWise Account --> <match-attr attr-name="createGroupWiseAccount"> <value><![CDATA[true]]></value> </match-attr>

將使用者從某一個郵局移到另一個郵局

若樣式表未設定為移動 GroupWise 帳戶,建議您使用 GroupWise 7 嵌入式管理單元 (或以後版本) 移動使用者。

若「輸出轉換」樣式表設定為移動 GroupWise 帳戶,則建議在 eDirectory 中移動使用者,並且讓驅動程式將物件指定給 GroupWise 中的新郵局。 以下會顯示「輸出轉換」規則的 XSLT 程式碼段落。 父元素上的 dest-dn 屬性會指定新的郵局。

<!--On an eDirectory User Move add the GroupWise Post Office DN based on the User’s new container--> <xsl:template match="move[@class-name=’User’]"> <!-- copy the Move through --> <xsl:copy> <!-- copy the attributes from the <move> element --> <xsl:apply-templates select="@*"/> <association> <xsl:value-of select="association"/>          </association> <parent> <xsl:attribute name="src-dn"> <xsl:value-of select="parent/@src-dn"/> </xsl:attribute> <!-- Specify the post office DN based on the container --> <xsl:choose> <xsl:when test="parent/@src-dn = ’\GWDRIVERTREE\Novell\Users\Sales’"> <xsl:attribute name="dest-dn"> \GWDRIVERTREE\Novell\GroupWise\Post Offices\Sales PO</xsl:attribute> </xsl:when> <xsl:when test="parent/@src-dn = ’\GWDRIVERTREE\Novell\Users\Engineering’"> <xsl:attribute name="dest-dn"> \GWDRIVERTREE\Novell\GroupWise\Post Offices\Engineering PO</xsl:attribute> </xsl:when> </xsl:choose> </parent> </xsl:copy> </xsl:template

新增要同步化的其他屬性

您最多可以映射二十個使用者 eDirectory 屬性至一般 GroupWise 屬性,並且在通訊錄中顯示這些屬性。 這些屬性使用 50106-50115 和 55002-55011 這兩個範圍。您必須先新增這些 eDirectory 屬性至過濾器。 此外,您必須在 GroupWise 嵌入式管理單元中設定這些屬性的組態,才能在 GroupWise 通訊錄中顯示這些屬性。

重新命名使用者

建議您變更 eDirectory 中的命名屬性,並且讓驅動程式重新命名 GroupWise 帳戶,藉此重新命名使用者。 當公用名稱 (CN) 為命名屬性 (此為預設值) 時,不需要任何特殊的樣式表編碼即可執行重新命名程序。 不過,GroupWise MailboxID 可以從公用名稱 (CN) 以外的屬性建立。 當其中一個屬性經過修改時,GroupWise 帳戶也應重新命名。 以下會顯示 XSLT 程式碼段落。 在此範例中,eDirectory 屬性 Given Name 用於命名 GroupWise 帳戶。 當修改了 Given Name 時,便會重新命名 GroupWise。 在下面的第二個範本中,<xsl:template match=”rename[@class-name=’User’]”> 會處理重新命名 eDirectory 使用者物件的情況。 在此情況下,<rename> 指令會傳遞至驅動程式,而空的 <new-name/> 元素則會阻止驅動程式重新命名 GroupWise 帳戶。 即使未重新命名 GroupWise 帳戶,仍須將重新命名事件傳遞至驅動程式。

不建議您使用 GroupWise 嵌入式管理單元進行重新命名。 不過,如果使用 GroupWise 嵌入式管理單元重新命名使用者,則必須使用 GroupWise 6.5 SP1 或更新版本。 如果您使用舊版的 GroupWise 嵌入式管理單元,則可能會造成驅動程式發生錯誤。

範例 1
<!-- When the attribute used to set CN changes, in this case Given Name, create   an element <new-name> to rename the GroupWise Account --> <xsl:template match="modify[@class-name=’User’]"> <!-- Given Name is used the for GroupWise CN, when it changes do a rename --> <xsl:if test="modify-attr[@attr-name=’50091’]"> <!-- Copy the <modify> through so all changes get made --> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <!-- generate a <rename> --> <rename class-name="User"> <!-- copy the attributes from the <modify-attr> element to the <rename> element --> <xsl:apply-templates select="@*"/> <!-- The object was not renamed in eDir so use src-dn for src-dn and old-src-dn --> <xsl:attribute name="old-src-dn"> <xsl:value-of select="@src-dn"/> </xsl:attribute> <!-- copy the children from the <modify> element to the <rename> element --> <xsl:apply-templates select="node()"/> <new-name> <xsl:value-of select="modify-attr[@attr-name=’50091’]/add-value/value"/> </new-name> </rename> </xsl:if> </xsl:template>
範例 2
<!-- When the User object is renamed in eDirectory, the GroupWise account is not renamed since it is named by the Given Name attribute --> <xsl:template match="rename[@class-name=’User’]"> <!-- Copy the rename through except new-name --> <xsl:copy> <xsl:apply-templates select="@*|node()[name() != ’new-name’]"/> <!-- <new-name> does not change since the GW account is named by the Given Name attribute --> <new-name/> </xsl:copy> </xsl:template>

建立閘道別名

以下 XSLT 程式碼段落說明如何在「輸出轉換」規則中建立閘道別名。 您的程式碼會負責產生屬性 50140 和 50077 的值。

<xsl:template match="add[@class-name=’User’]"> <xsl:copy> <xsl:apply-templates select="@*"/> <add-attr attr-name="Gateway Alias"> <value type="structured"> <component name="50140"><![CDATA[SMTP]]></component> <component name="50077"><![CDATA[UserOne@novell.com]]> </component> </value> </add-attr> <xsl:apply-templates select="* | comment() | processing-instruction() | text()"/> </xsl:copy> </xsl:template>

查詢綽號

以下「輸出轉換」規則說明如何查詢 GroupWise 綽號。此樣式表中的 search-attrs 是可以選用的。 這些屬性用於界定搜尋範圍。 當您指定郵局名稱 (50069) 時,亦須指定領域名稱 (50068)。 傳回的綽號會不只一個。

例如,User2a 先重新命名為 User2b,然後又再重新命名為 User2c。 如此將會有兩個綽號記錄 (User2a 和 User2b),而兩者都是指 User2c。 此程式碼範例會查詢目前事件「使用者」的綽號。 您應使用不同的比對準則。

<xsl:template match="modify[@class-name=’User’]"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:variable name="query"> <nds dtdversion="1.0" ndsversion="8.5"> <input> <query class-name="{@class-name}" event-id="query-groupwise" cope="entry"> <association> <xsl:value-of select="association"/> </association> <!-- User Domain Name --> <read-attr attr-name="50035"/> <!-- User Post Office Name --> <read-attr attr-name="50062"/> <!-- User Object Name --> <read-attr attr-name="50073"/> </query> </input> </nds> </xsl:variable> <xsl:variable name="gw-data" select="query:query($destQueryProcessor, $query)//instance"/> <xsl:variable name="query2"> <nds dtdversion="1.0" ndsversion="8.5"> <input> <query event-id="query-groupwise" scope="subtree"> <search-class class-name="GroupWise Nickname"/> <!-- Referenced Domain Name --> <search-attr attr-name="50068"> <value> <xsl:value-of select="$gw-data//attr[@attr-name=’50035’]/value"/> </value> </search-attr> <!-- Referenced Post Office Name --> <search-attr attr-name="50069"> <value> <xsl:value-of select="$gw-data//attr[@attr-name=’50062’]/value"/> </value> </search-attr> <!-- Referenced Object Name --> <search-attr attr-name="50070"> <value> <xsl:value-of select="$gw-data//attr[@attr-name=’50073’]/value"/> </value> </search-attr> <!-- Domain Name of Nickname Record --> <read-attr attr-name="50035"/> <!-- Post Office Name of Nickname Record --> <read-attr attr-name="50062"/> <!-- Object Name of Nickname Record --> <read-attr attr-name="50073"/> </query> </input> </nds> </xsl:variable> <xsl:variable name="gw-nickname" select="query:query($destQueryProcessor, $query2)//instance"/> </xsl:template>
結果
<nds dtdversion="1.1" ndsversion="8.6"> <source> <product build="20020409_1220" instance="GroupWise ZDS Driver" version="1.0a Beta">DirXML Driver for GroupWise</product> <contact>Novell, Inc.</contact> </source> <output> <instance class-name="GroupWise Nickname" event-id="0"> <attr attr-name="50035"> <value type="string">TaoDom</value> </attr> <attr attr-name="50062"> <value type="string">TaoPO</value> </attr> <attr attr-name="50073"> <value type="string">User2b</value> </attr> </instance> <instance class-name="GroupWise Nickname" event-id="0"> <attr attr-name="50035"> <value type="string">TaoDom</value> </attr> <attr attr-name="50062"> <value type="string">TaoPO</value> </attr> <attr attr-name="50073"> <value type="string">User2a</value> </attr> </instance> <status level="success"/> </output> </nds>

查詢閘道別名

以下 XSLT 程式碼段落說明如何在「輸出轉換」規則中查詢閘道別名。

<xsl:template match="modify[@class-name=’User’]"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:variable name="query"> <nds dtdversion="1.0" ndsversion="8.5"> <input> <query class-name="{@class-name}" event-id="query-groupwise" scope="entry"> <association> <xsl:value-of select="association"/> </association> <read-attr attr-name="Gateway Alias"/> </query> </input> </nds> </xsl:variable> <xsl:variable name="gw-aliases" select="query:query($destQueryProcessor, $query)//instance"/> </xsl:template> </xsl:template>
結果
<nds dtdversion="1.0" ndsversion="8.5"> <source> <product version="1.0 SP1 Beta, 20020307_1205">GroupWise ZDS Driver</product> <contact>Novell, Inc.</contact> </source> <output> <instance class-name="User" event-id="0" src-dn="TaoDom.TaoPO.User1{106}DFD036A0-0776-0000-A246-4100F0001300"> <association>TaoDom.TaoPO.User1{106}DFD036A0-0776-0000-A246-4100F0001300<association> <attr attr-name="Gateway Alias"> <value type="structured"> <component name="50140">SMTP</component> <component name="50077">UserOne@novell.com</component> </value> </attr> </instance> <status level="success"/> </output> </nds>

查詢 Internet EMail Address

以下 XSLT 程式碼段落說明如何在「輸出轉換」規則中查詢 GroupWise 所產生的 Internet EMail Address。

<xsl:template match="modify[@class-name=’User’]"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:variable name="query"> <nds dtdversion="1.0" ndsversion="8.5"> <input> <query class-name="{@class-name}" event-id="query-groupwise" scope="entry"> <association> <xsl:value-of select="association"/> </association> <read-attr attr-name="Internet EMail Address"/> </query> </input> </nds> </xsl:variable> <xsl:variable name="inet-address" select="query:query($destQueryProcessor, $query)//instance"/> </xsl:template>
結果
<nds dtdversion="1.1" ndsversion="8.6"> <source> <product build="20020502_1251" instance="GroupWise Driver" version="1.0a Beta">DirXML Driver for GroupWise</product> <contact>Novell, Inc.</contact> </source> <output> <instance class-name="User" event-id="0" src-dn="TaoDom.TaoPO.User2{106}5B8C40F0-0E79-0000-9ADA-350037009300">			         <association>TaoDom.TaoPO.User2{106}5B8C40F0-0E79-0000-9ADA-350037009300</association> <attr attr-name="Internet EMail Address"> <value type="string">User2@domain.com</value> </attr> </instance> <status level="success"/> </output> </nds>

同步化 GroupWise 外部使用者

您可能在企業中擁有數個不同的電子郵件應用程式。 即使並非所有員工都會擁有 GroupWise 電子郵件帳戶,您仍希望 GroupWise 通訊錄包含所有員工的資訊。 而驅動程式能夠建立 GroupWise 外部使用者,如此能讓驅動程式取得其他電子郵件系統中的資訊 (透過 Identity Vault),並且在 GroupWise 通訊錄中顯示這些資訊。 Identity Vault 中的使用者可以指定給 GroupWise 外部郵局。

如果您使用多個電子郵件系統 (GroupWise 和 NetMail®/Notes/Exchange),則可建立外部使用者及外部郵局,以便將非 GroupWise 系統中的使用者新增至 GroupWise 通訊錄。

若要同步化外部電子郵件系統與 GroupWise 之間的資料,您的實作必須符合下列條件︰

  • 外部使用者必須指定給外部郵局,或是在外部郵局中建立。 這些使用者並沒有 GroupWise 信箱。
  • 外部郵局必須屬於非 GroupWise 領域。

預設的驅動程式組態並不包含此自訂功能。 若要實作此功能,您應根據業務程序,針對過濾器、規則及樣式表進行適當的變更。

HINT:您可以在軟體的 \nt\dirxml\drivers\groupwise\extensions 目錄中找到如何實作此解決方案的範例。 不過這些僅為範例,不是用於實際生產用途,因此仍需要自訂。 如果使用者並非位於 GroupWise 使用者所在的樹狀結構中,則您可以使用簡單的範例。 如果 GroupWise 和非 GroupWise 使用者位於相同的樹狀結構中,請使用合併的範例。

建立外部使用者

您可以利用兩種方式在建立外部使用者時指定佈置︰

在 eDirectory 中為非 GroupWise 使用者建立帳戶時,請務必確定屬性 gw:classification=”external” 為「新增」事件的一部份。 該屬性可以用於「使用者」物件及「郵局」物件上。

您可以修改「綱要映射」規則或「輸出轉換」規則,使其根據某些準則 (例如父容器名稱) 修改使用者的類別名稱。外部使用者先前為單獨的類別。 偏好的方法為新增屬性,而非新增類別。 不過這兩種方法互斥。

當新的 GroupWise 外部使用者新增至 GroupWise 時,驅動程式會在 Identity Vault 中針對「使用者」物件建立關聯。 如果 Identity Vault 中非 GroupWise 使用者的資訊變更,驅動程式便會將那些變更同步化至 GroupWise。 如果關聯金鑰經過修改或遭刪除,連接便會中斷,且驅動程式不會將對於 Identity Vault 中的「使用者」物件所做的任何變更同步化至 GroupWise。

在新增事件中指定外部郵局

如果您不使用驅動程式建立外部郵局,則需在「XML 新增」事件中產生下列資訊。 您必須以系統專屬的名稱取代外部郵局名稱以及非 GroupWise 領域值。

<!-- 	The external post office name to which the user belongs. --> <add-attr attr-name="50062"> <value type="string"><![CDATA[External post office name]]></value> </add-attr>

<!-- The non-GroupWise domain name to which the external post office belongs. --> <add-attr attr-name="50035"> <value type="string"><![CDATA[Non-GroupWise domain name]></value> </add-attr>

NOTE:如果您在「新增」事件中加入其他 XML,「佈置」規則中的值就會被覆蓋。

建立外部郵局

您可以利用兩種方式建立外部郵局︰

  • 讓驅動程式建立 GroupWise 外部郵局,並使該郵局與 eDirectory 物件相關聯,例如「組織單位」(建議)。
  • 透過 ConsoleOne® 建立外部郵局。

如果您要讓驅動程式建立外部郵局,則應修改「綱要映射」規則,以映射「GroupWise 郵局」的類別名稱,並且修改「輸出轉換」規則,以新增 XML 屬性 gw:classoication=“external”。

NOTE:您必須先在 ConsoleOne 中建立非 GroupWise 領域,才能建立外部郵局。

您可以利用兩種方式在建立外部郵局時指定佈置︰

  • 您可以在「佈置」規則中指定要在其中建立外部郵局之非 GroupWise 領域的名稱。
  • 產生 XML 程式碼以指定非 GroupWise 領域,藉此識別非 GroupWise 領域。 如需其他資訊,請參閱在新增事件中指定非 GroupWise 領域
在新增事件中指定非 GroupWise 領域

您可以在「XML 新增」事件中產生下列資訊。 您必須以系統專屬的名稱取代非 GroupWise 領域值。

<!-- 	The non-GroupWise domain name to which the external post office belongs. --> <add-attr attr-name="50035"> <value type="string"><![CDATA[Non-GroupWise domain name]></value> </add-attr>

NOTE:如果您在「新增」事件中加入其他 XML,「佈置」規則中的值就會被覆蓋。

如果您將外部郵局與「組織單位」相關聯,則亦須映射 OU 屬性至「組織單位」類別的 CN 屬性,而驅動程式將會使用該屬性值做為郵局名稱。

NOTE:「綱要映射」規則擁有「使用者」類別上 OU 屬性的映射。 請勿變更「使用者」類別映射。

建立外部使用者時,應在「佈置」規則中使用「組織單位」的 DN。 新增外部郵局時,則應指定外部郵局所屬的 GroupWise 領域。

當您使用驅動程式建立外部郵局時,GroupWise 會在非 GroupWise 領域上使用預設的時區設定。 如果您要變更郵局的時區設定,請在「新增」事件中產生下列 XML。 插入適當的時區值以取代 EST。

     	<add-attr attr-name="50088" > <value type="string">EST</value> </add-attr>

驗證是否為唯一的電子郵件地址或閘道別名

GroupWise 驅動程式提供特殊查詢,可讓您查看所提出的網際網路電子郵件地址或閘道別名是不是唯一的。 如果是唯一的地址,則會傳回不包含例項節點的成功狀態。 如果不是唯一的地址,則會傳回擁有衝突地址的記錄。

此處為查詢範例,包含硬式編碼值 helloworld@mydomain.com。 請務必以您的值取代硬式編碼值的每個例項。

<query event-id="query-groupwise" scope="subtree"> <search-class class-name="User"/> <search-attr attr-name="Internet EMail Address"> <value>helloword@mydomain.com</value> </search-attr> <!-- Domain Name of Object --> <read-attr attr-name="50035"/> <!-- Post Office Name of Object --> <read-attr attr-name="50062"/> <!-- Object Name of Object --> <read-attr attr-name="50073"/> </query>

如果閘道別名具有此值,則會收到下列內容︰ <instance class-name="GroupWise GateWay Alias" event-id="0"> <attr attr-name="50035"> <value type="string">gwdom</value> </attr> <attr attr-name="50062"> <value type="string">gwpo</value> </attr> <attr attr-name="50073"> <value type="string">User3</value> </attr> </instance>

<attr attr-name> 元素的值會提供閘道所屬使用者的名稱。

如果現有使用者擁有網際網路電子郵件地址,則會收到下列內容︰ <instance class-name="User" event-id="0" src-dn="gwdom.gwpo.User3"> <association>gwdom.gwpo.User3{106}7F7B2F70-0434-000-A0DE-DB0019009700</association> <attr attr-name="50035"> <value type="string">gwdom</value> </attr> <attr attr-name="50062"> <value type="string">gwpo</value> </attr> <attr attr-name="50073"> <value type="string"User3</value> </attr> </instance>

即使有多個衝突,仍只會傳回一個例項。

使用驅動程式設定 GroupWise 用戶端選項

驅動程式可讓您設定某些環境,以及傳送 GroupWise 用戶端的選項。 這些環境是使用規則所設定的。 用戶端選項可以使用許多欄位,並且細分至各屬性中。

所有屬性的結構均相同。 規則會建立屬性、識別正確的欄位、設定欄位值,以及讓您鎖定欄位。

<attr attr-name=""> <value type="structured"> <component name="lock-level"></component> <component name="value"></component> <component name="field"></component> </value> </attr>

值和欄位元件必須存在。 lock-level 則為選擇性的。 如果指定了 lock-level,則也必須為其指定一個值 lock-level 不存在的情況就等於將 lock-level 設為 0。

lock-level 會鎖定修改欄位的能力。 lock-level 通常會經由 ConsoleOne 嵌入式管理單元設定, 並且可以在使用者、郵局或領域層級設定。 如果是在郵局層級鎖定欄位,使用者便無法修改欄位。 以下列出許多不同的 lock-level︰

  • 0: 不鎖定。 預設
  • 2: 針對使用者設定,但不鎖定。
  • 3: 針對郵局設定,但不鎖定。
  • 4: 針對領域設定,但不鎖定。
  • 5: 針對使用者鎖定。
  • 6: 針對郵局鎖定。
  • 7: 針對領域鎖定。

鎖定層級可由一群欄位共用。 如果您要鎖定某個欄位,則必須鎖定所有欄位。 即使是預設值仍須加以設定,鎖定功能才會運作。

歸檔目錄

您可以透過「環境 > 檔案位置 > 歸檔目錄」下的 GroupWise 用戶端選項,在 ConsoleOne 中找出歸檔目錄。 「歸檔目錄」會設定用於將項目歸檔的目錄。 每一位使用者都必須擁有自己的歸檔目錄,因此這個目錄可以是本地目錄 (例如 c:\novell\groupwise) 或網路伺服器上的個人使用者目錄。 如果您設定的是本地磁碟機,請確定使用者已建立目錄。 如果您選取的是網路磁碟機,請確定使用者擁有存取目錄的必要權限。

<attr attr-name="LocationsSettings"> <value type="structured"> <component name="lock-level">0</component> <component name="value">c:\grpwise</component> <component name="field">archiveLocation</component> </value> <value type="structured"> <component name="lock-level">0</component> <component name="value"></component> <component name="field">archiveLocationLinux</component> </value> </attr>

archiveLocation 欄位是 UNC 路徑或個人目錄的本地路徑,其中儲存 Windows 用戶端的歸檔訊息。 archiveLocationLinux 欄位是本地或個人目錄的 Linux 路徑,其中儲存跨平台用戶端的歸檔訊息。 您不需要同時加入這兩個欄位。

磁碟空間管理

您可以在「傳送 > 磁碟空間管理」下的 GroupWise 用戶端中找到歸檔目錄。 「磁碟空間管理」會在郵局上對使用者強制執行磁碟空間限制。 有多項設定可用於自定針對使用者限制磁碟空間的方式。

<attr attr-name="DiscardSettings"> <value type="structured"> <component name="lock-level">0</component> <component name="value">1</component> <component name="field">userLimitSet</component> </value> <value type="structured"> <component name=="value">10485760</component> <component name="field">boxSizeLimit</component> </value> </value> <value type="structured"> <component name="value">75</component> <component name="field">boxThresholdLimit</component> </value> <value type="structured"> <component name="value">0</component> <component name="field">messageSendLimit</component> </value> <value type="structured"> <component name="lock-level">0</component> <component name="value">1</component> <component name="field">boxLimitAppliesToCache</components> </value> <value type="structured"> <component name="lock-level">0</component> <component name="value">1</component> <component name="field">enableBoxThresholdNotification</component> </value> <value type="structured"> <component name="lock-level">0</component> <component name="value">1</componenet> <component name="field"enableBoxSizeNotification</component> </value> </attr>

  • 使用者限制︰ 停用或啟用其他「磁碟空間管理」設定。 在預設狀態下會停用此選項。 userLimitSet 欄位擁有兩個值;0 為停用,1 則為啟用。

    如果您啟用該欄位,則可修改下列選項,否則會忽略這些選項。 如果您要針對這些選項啟用 lock-level,則必須同時針對此欄位群組中的所有選項啟用 lock-level。

    • 信箱大小限制︰ 控制可供使用者儲存訊息和附件檔案的最大邏輯磁碟空間容量。 因為附件會由相同郵局上的所有收件者使用者共享,所以該設定會使用邏輯磁碟空間。 在共用資料夾中的訊息只算做該共用資料夾之擁有者的磁碟空間。

      boxSizeLimit 欄位是以位元組為單位設定的。 如果將該值設為 0,則沒有信箱大小的限制。 如果您要將限制設為 10 MB,請輸入 10485760。最大值為 4 GB (64,294,967,295)。

    • 警告使用者的限定值︰ 設定使用者信箱大小 (指定於「信箱大小限制」中) 的百分比值。 達到此值時,GroupWise 會對使用者觸發警告,告知其信箱即將達到空間限制。 如果使用者持續傳送郵件直到達到限制,則必須刪除項目或將項目歸檔,才能再傳送郵件。

      boxThresholdLimit 欄位是以百分比設定的。 如果您不希望 GroupWise 傳送警告,則將此值設為 0 或 100。

    • 最大傳送郵件大小︰ 指定使用者可以使用 GroupWise 用戶端傳送的最大郵件大小。 如果使用者傳送的項目超過這個大小,訊息便會顯示並通知使用者該項目過大而無法傳遞。

      messageSendLimit 欄位是以位元組為單位設定的。 如果此值設為 0,則沒有郵件大小的限制。 如果您要將限制設為 10 KB,請輸入 10240。最大值為 4 GB (64,294,967,295)。

  • 套用至快取的限制︰ 針對本地工作站上的使用者「快取」信箱,使用與郵局中「線上」信箱相同的磁碟空間限制。 如果您對擁有現有「快取」信箱的使用者上施加此限制,則其「快取」信箱的大小可能會遭到縮減,以符合新的磁碟空間限制。 這些使用者應事先收到警告,以便能夠在縮減「快取」信箱大小之前進行信箱備份。 否則,使用者會遺失想保留的郵件。

    boxLimitAppliesToCache 欄位會設為 0 或 1。0 表示「否」,1 則表示「是」。 userLimitSet 欄位必須設為 1,此功能才會運作。

  • 超過限定值時通知管理員︰ 選取此選項,則會在使用者的信箱超過「警告使用者的限定值」中建立的大小時,一併通知管理員與使用者。 您必須在 ConsoleOne 中「領域」物件的「識別資料」頁面上定義接收通知的管理員。 管理員無法透過驅動程式設定。

    enableBoxThresholdNotification 欄位會設為 0 或 1。0 表示「否」,1 則表示「是」。 userLimitSet 欄位必須設為 1,此功能才會運作。

  • 超過大小限制時通知管理員︰ 選取此選項,則會在使用者的信箱超過「信箱大小限制」中建立的大小時通知管理員。 您必須在 ConsoleOne 中「領域」物件的「識別資料」頁面上定義接收通知的管理員。 管理員無法透過驅動程式定義。

    enableBoxSizeNotification 欄位會設為 0 或 1。0 表示「否」,1 則表示「是」。 userLimitSet 欄位必須設為 1,此功能才會運作。