通过前面的教程“建立活动集合”,您已经学会在ERP5 CRM模块中建立活动集合。该教程中,您将看到如何从该活动集合中建立新的事件。
正如本章引言“接收和发出事件”介绍的,一个事件可以是一通电话,一封电子邮件,一条传真信息等。它可以是接收事件也可以是发出事件。这里我们要学习的是如何准备一项活动,即创建该活动的详细事件,它们将在之后被发出,您将在下个教程中学习。
上一个教程中,我们建立了一个集合--营销活动Beta Developer Program(右图),通过公布招聘开发员,以提高SlapOS(有VIFIB开发的新的开源云系统)的市场知名度。
现在该活动集合已被开启,我们将要为它建立事件,将该活动的信息事件发出,然后处理有客户回复的接收事件。VIFIB例子中,正如本章引言介绍的,当营销活动集合被开启后,社区经理Cédric de Saint Martin就会创建一个邮件信息--一个事件,然后发送给他的联系人,这些人可能对该活动感兴趣,有可能成为SlapOS未来的开发者。当这些联系人收到邮件后,他们就会通过邮件信息回复我们的VIFIB经理,而这些信息将会被完好地存储在ERP5 CRM中,以供将来使用。
本教程中,我们将详细描述如何从营销活动集合中创建邮件信息事件。
描述:事件标题是"SlapOS Recruits Beta Developers",事件类型是邮件信息,事件性质是公告,发送人是Cédric de Saint Martin (来自VIFIB公司的SlapOS社区经理),接受人是他的14位联系人,包括软件开发员,公司经理,学校教授等,事件内容是关于公布开发员招聘活动以及对SlapOS项目的描述。
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span> | ||
openAndWait | ${base_url}/Zuite_setUpCreateEventTest |
|
verifyTextPresent | Init Ok |
|
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span> | ||
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span> |
在活动集合的页面下方,有一个该活动的所有事件列表。如图所示,该列表现在是空白,而我们就要从该活动集合建立新的事件,以显示在该列表中。
openAndWait | ${base_url}/view |
|
selectAndWait | //select[@name="select_module"] | Campaigns |
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=(['title', 'ZUITE-TEST-CREATE-EVENT-CAMPAIGN-001'],), enter_object=True)"/> | ||
verifyText | //div[@id="breadcrumb"]/a[2] | Campaigns |
verifyText | //div[@id="breadcrumb"]/a[3] | ZUITE-TEST-CREATE-EVENT-CAMPAIGN-001 |
要在活动集合中添加事件,请打开页面上方的“操作”菜单然后选择“创建新事件”。
selectAndWait | //select[@name="select_action"] | Create New Event |
现在您已经进入事件创建页面,在这里您可以为该事件添加标题;如果您选择创建一条网站信息(电子邮件),该事件的标题就是事件接收人收到的邮件的标题,者您将在下节教程中看到。然后,请选择事件类型并为该事件选择方向(本例中,该事件将是一个发出的邮件信息事件)。然后在“信息”区域,您可以编写您希望发出的邮件内容。
当您完成操作,您可以选择保持事件的“草拟”状态,那么您将可以从集合文件的事件列表中将其删除,否则,该事件将被建立在“已计划”状态下,表明它已准备被发出,而您将再也无法将其从集合文件中删除,因为它将被作为该活动的一项历史而记录下来。然后,您将可以点击“新事件”按钮,这将建立该新事件,并将其文件打开以便您进行进一步编辑。
select | //select[@name="field_your_portal_type"] | Mail Message |
type | //input[@name="field_your_title"] | ZUITE-TEST-CREATE-EVENT-EVENT-001 |
type | //textarea[@name="field_your_text_content"] | Annoucing the developer hiring campaign and describing the progression of SlapOS Project. |
click | //input[@name="field_your_direction" and @value="outgoing"] | |
clickAndWait | //button[@id="dialog_submit_button"] |
|
verifyText | //div[@id="transition_message"] | Created and associated a new Mail Message to the ticket. |
现在事件已经被创建,如图示一些条目以及被填写。
现在我们就来解释一下“跟进”条目。本章引言中介绍,为了跟踪交流事项,ERP5 CRM使用“事件起源”以及“跟进”。该“跟进”条目就为一个事件和一个集合创建了连接(一个集合可以是一项活动,一个客户支持请求,一次会议,一个销售机会,等等。)事件就是从集合中创建的。而“事件起源”则为相关事件创建了连接(例如,一封原始邮件以及所有对它的回复邮件)。
本例中,由于我们是从集合Beta Developer Program中建立这一事件(邮件信息"SlapOS Recruits Beta Developers"),因此“跟进”条目就被自动填上这一集合。结果是,该事件将显示在跟进集合的事件列表中。本例中,邮件信息"SlapOS Recruits Beta Developers"这一事件将会显示在创建它的Beta Developer Program这一集合的页面。
verifyValue | //input[@name="field_my_default_follow_up_title"] | ZUITE-TEST-CREATE-EVENT-CAMPAIGN-001 |
verifyValue | //input[@name="field_my_title"] | ZUITE-TEST-CREATE-EVENT-EVENT-001 |
verifyText | //label[normalize-space(text())='State']/../div | Planned |
由于我们在上一步“设置事件标题,类型,方向并编辑信息”已经填写了邮件内容,现在您只需填写“描述”区域(如果您有需要团队人员阅读的信息),然后您需要填写发送人/呼叫人,以指明负责发送该邮件的人,以及接收人,该人或组织必须来自ERP5系统中人或组织模块。如果您对人名不确定,您可以通过该区域右边的齿轮图标来打开ERP5的人或组织列表,从而选择相应的接受人来设置联系(请参见前面的教程)。当您完成对事件文件的编辑后,请 保存您的操作。
type | //textarea[@name="field_my_text_content"] | Annoucing the developer hiring campaign and describing the progression of SlapOS Project. |
clickAndWait | //button[@name="Base_edit:method"] |
|
如果您希望预览您将发送的邮件,请点击“预览”标签页,如图红框所示。
storeAttribute | //div[@id="breadcrumb"]/a[3]@href | event_url |
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span> | ||
openAndWait | ${event_url} |
|
clickAndWait | link=Preview |
|
verifyTextPresent | Annoucing the developer hiring campaign and describing the progression of SlapOS Project. | |
clickAndWait | //span[contains(text(),'View')] |
|
现在我们将返回活动集合以检查该事件是否已经被成功添加到活动集合文件中。
要返回相关活动集合,请通过点击“概览”标签返回事件的概览页面,如图红框所示。然后,点击“跟进”条目右边的飞机图标,这将引导您进入该事件相连的集合。
clickAndWait | //input[@name="field_my_default_follow_up_title"]/../a |
|
verifyText | //div[@id="breadcrumb"]/a[2] | Campaigns |
verifyText | //div[@id="breadcrumb"]/a[3] | ZUITE-TEST-CREATE-EVENT-CAMPAIGN-001 |
verifyText | //span[@class="listbox-current-page-total-number"] | 1 records |
clickAndWait | link=ZUITE-TEST-CREATE-EVENT-CAMPAIGN-001 | |
verifyText | //label[normalize-space(text())='State']/../div | Opened |
现在您被引导进入该事件的跟进集合,即创建该事件的集合。在该活动集合页面的下方,如图红框所示,您将看待您刚刚创建以及编辑的事件,它被显示为一条已计划信息,这表明该事件已被成功创建并等待被确认。
下一步就是理解如何处理这条发出事件。我们将在下节教程“发送发出事件”中学习。
verifyText | //tr[@class='listbox-data-line-0 DataA']/td[1]/ | ZUITE-TEST-CREATE-EVENT-EVENT-001 |
clickAndWait | link=ZUITE-TEST-CREATE-EVENT-EVENT-001 | |
verifyText | //label[normalize-space(text())='State']/../div | Planned |
selectAndWait | //select[@name="select_action"] | Confirm |
clickAndWait | //button[@id="dialog_submit_button"] | |
clickAndWait | //input[@name="field_my_default_follow_up_title"]/../a | |
verifyText | //tr[@class='listbox-data-line-0 DataA']/td[7]/ | Confirmed |
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span> | ||
openAndWait | ${base_url}/Base_clearCache | |
assertTextPresent | Cleared. | |
openAndWait | ${base_url}/view | |
selectAndWait | //select[@name="select_module"] | Events |
verifyText | //div[@id="breadcrumb"]/a[2] | Events |
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=(['title', 'ZUITE-TEST-CREATE-EVENT-EVENT-001'],), enter_object=True)"/> | ||
type | //input[@name="field_my_source_title"] | ZUITE-TEST-CREATE-EVENT-PERSON-OPERATION-MANAGER |
type | //textarea[@name="field_my_destination_title_list"] | ZUITE-TEST-CREATE-EVENT-PERSON-OPERATION-MANAGER |
clickAndWait | //input[@name="Base_edit:method"] | |
verifyTextPresent | Data updated. | |
selectAndWait | //select[@name="select_action"] | Send |
clickAndWait | //button[@id="dialog_submit_button"] | |
verifyText | //label[normalize-space(text())='State']/../div | Sent |
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span> | ||
openAndWait | ${base_url}/Base_clearCache | |
assertTextPresent | Cleared. | |
openAndWait | ${base_url}/event_module?simulation_state=ordered | |
verifyText | //span[@class="listbox-current-page-total-number"] | 0 records |
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span> | ||
openAndWait | ${base_url}/Zuite_tearDownCreateEventTest |
|
verifyTextPresent | Clean Ok |
|
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span> |
For more information, please contact Jean-Paul, CEO of Nexedi (+33 629 02 44 25).