B.8 设置和修改 Lotus Notes 字段标志

Notes 驱动程序 2.1.1 版及更高版本可以设置(添加)或修改要同步的 Lotus Notes 数据库 (.nsf) 中文档(记录)的 Lotus Notes 字段标志(仅限订购者通道)。 驱动程序可以适当设置的可用 Lotus Notes 字段标志有 read-accessread/write-accessnamesprotectedsummary。 还可以启用或禁用 sealsign 标志,但这不会获得期望的支持功能。

可以使用相应的 XML 标记将每个 Notes 字段标志设置为启用或禁用。 下表显示了这种对应关系。

Table B-1 驱动程序特性标志及其相应的 Notes 字段标志

driver-attr-flag

Notes 字段标志

authors-flag

READ/WRITE-ACCESS

encrypted-flag

SEAL

names-flag

NAMES

protected-flag

PROTECTED

readers-flag

READ-ACCESS

signed-flag

SIGN

summary-flag

SUMMARY

可以将这些 XML 标记 (driver-attr-flags) 作为 <add-attr> 或 <modify-attr> 元素的特性(与 attr-name 特性同级)插入订购者通道的 XDS 文档中。 必须根据 Lotus Notes 数据库纲要和设计规则,以适当的方式使用字段标志。 对字段使用不适当的标志(或标志组合)会导致该文档(记录)出现意外结果。

例如,如果错误地对某个字段设置某些特性标志(readers-flag、authors-flag),而该字段无法处理这些标志,则可能会将未经认可的用户从 Notes 通讯录视图中删除(无法访问这些用户)。

即使驱动程序不会采取必需的步骤,以使用适当的证书调用加密方法,也可以对字段设置 encrypted-flag。 因此,可以将字段设置为 SEAL,但是其它代码需要调用适当的方法,以加密文档中的字段,否则,该字段不会真正被密封(加密)。

B.8.1 创建策略规则样本

下面是在创建策略规则中使用字段标志的示例:

<rule> <description>Add Shoe Size</description> <conditions> <and> <if-operation op="equal">add</if-operation> </and> </conditions> <actions> <do-add-dest-attr-value class-name="User" name="ShoeSize"> <arg-value type="string"> <token-text xml:space="preserve">9.5</token-text> </arg-value> </do-add-dest-attr-value> </actions> </rule> <rule> <description>Apply ShoeSize Field Flags</description> <conditions> <and> <if-operation op="equal">add</if-operation> <if-class-name mode="nocase" op="equal">User</if-class-name> </and> </conditions> <actions> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="authors-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="readers-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="names-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="protected-flag"> <arg-string> <token-text>true</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="summary-flag"> <arg-string> <token-text>true</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="signed-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../add[@class-name='User']/add-attr[@attr-name='ShoeSize']" name="encrypted-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> </actions> </rule>

B.8.2 修改策略规则样本

下面是命令转换中修改策略规则的示例:

<rule> <description>Apply User Telephone Number Field Flags</description> <conditions> <and> <if-class-name mode="nocase" op="equal">User</if-class-name> <if-operation op="equal">modify</if-operation> <if-op-attr name="Telephone Number" op="available"/> </and> </conditions> <actions> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="authors-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="readers-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="names-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="protected-flag"> <arg-string> <token-text>true</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="summary-flag"> <arg-string> <token-text>true</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="signed-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> <do-set-xml-attr expression="../modify[@class-name='User']/modify-attr[@attr-name='Telephone Number']" name="encrypted-flag"> <arg-string> <token-text>false</token-text> </arg-string> </do-set-xml-attr> </actions> </rule>

B.8.3 添加 XDS 文档示例

下面是提交到 Notes 驱动程序 Shim 之前的添加 XDS 文档示例:

<nds dtdversion="2.0" ndsversion="8.x"> <source> <product version="2.0.5.51 ">Identity Manager</product> <contact>Novell, Inc.</contact> </source> <input> <add certify-user="true" class-name="Person" create-mail="true" dest-dn="CN=ErnieEngineer/OU=eng/O=novell" drv-param-cert-id="eng-cert-id-file" drv-param-cert-pwd="eng-cert-id-password" event-id="BLACKCAP-NDS#20040915163542#1#1" expire-term="22" internet-password-force-change="false" mail-acl-manager-name="CN=Notes Driver/O=novell" mail-file-inherit-flag="true" no-id-file="false" notes-password-change-interval="0" notes-password-check-setting="PWD_CHK_CHECKPASSWORD" notes-password-grace-period="0" qualified-src-dn="O=DirXML\OU=Notes\OU=Users\OU=eng\CN=ErnieEngineer" roaming-cleanup-period="90" roaming-cleanup-setting="REG_ROAMING_CLEANUP_EVERY_NDAYS" roaming-server="CN=blackcap/O=novell" roaming-subdir="Roaming\ErnieEngineer" roaming-user="false" src-dn="\raspberry\DirXML\Notes\Users\eng\ErnieEngineer" src-entry-id="39853" store-useridfile-in-ab="true" sync-internet-password="true"> <add-attr attr-name="FullName"> <value naming="true" timestamp="1095266118#20" type="string">ErnieEngineer</value> </add-attr> <add-attr attr-name="LastName"> <value timestamp="1095266118#3" type="string">Engineer</value> </add-attr> <add-attr attr-name="FirstName"> <value timestamp="1095266142#1" type="string">Ernie</value> </add-attr> <add-attr attr-name="InternetAddress"> <value>ErnieEngineer@novell.com</value> </add-attr> <add-attr attr-name="ShoeSize" authors-flag="false" encrypted-flag="false" names-flag="false" protected-flag="true" readers-flag="false" signed-flag="false" summary-flag="true"> <value type="string">9.5</value> </add-attr> </add> </input> </nds>

B.8.4 修改 XDS 文档示例

下面是提交到 Notes 驱动程序 Shim 之前的修改 XDS 文档示例:

<nds dtdversion="2.0" ndsversion="8.x"> <source> <product version="2.0.5.51 ">Identity Manager</product> <contact>Novell, Inc.</contact> </source> <input> <modify class-name="Person" event-id="BLACKCAP-NDS#20040915164613#1#1" qualified-src-dn="O=DirXML\OU=Notes\OU=Users\OU=eng\CN=ErnieEngineer" src-dn="\raspberry\DirXML\Notes\Users\eng\ErnieEngineer" src-entry-id="39853" tell-adminp-process="tell adminp process all" timestamp="1095267005#2"> <association state="associated">A4C23EE8273577AF87256F10005B2BF9</association> <modify-attr attr-name="OfficePhoneNumber" authors-flag="false" encrypted-flag="false" names-flag="false" protected-flag="true" readers-flag="false" signed-flag="false" summary-flag="true"> <remove-value> <value timestamp="1095266773#1" type="teleNumber">222-2222</value> </remove-value> <add-value> <value timestamp="1095267005#2" type="teleNumber">222-2221</value> </add-value> </modify-attr> </modify> </input> </nds>