如何在crm里面进行开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在crm里面进行开发相关的知识,希望对你有一定的参考价值。
这是一篇有关CRM定制开发的全面指南。定制开发是指通过追加一些定制内容使选定的CRM更加匹配贵公司的业务和流程,这包括需求分析和开发实现。比如您已经为贵公司找到合适的CRM,但其在一些业务和操作层面上不太符合贵公司的需求,那么您可能会希望CRM供应商提供一些个性化的开发来弥补这种遗憾。为了帮助您更好地规划需求和节约成本,我们将从定制开发所涉及到的方方面面给出我们的看法,以便您在打算实施这一过程时有一个全面的参考,从而以更高的性价比来实现CRM系统的定制开发。
一、弄清楚是否真的有必要定制
是的,根据我们的经验,很多企业高估了定制的必要性。在您对如何利用CRM来改善您的业务和流程还没有一个完整的概念时,最好通过一段时间的实际使用来深入了解CRM如何映射您的当前业务。也许当您发现CRM现有的功能就足以解决当前的业务挑战,之前认为必要的定制已无足轻重或者可以延后时,那么您就能大大减少采购成本,并且加速CRM的实施周期。所以,在衡量定制开发的内容之前,请先确定以下两点。
1、了解CRM系统的扩展性是否可以消除定制的必要性
很多专业和成熟的CRM系统提供了良好的扩展性和一定数量的业务参数,这些特性可以确保CRM系统符合一些普适性的需求调整和业务扩展。请深入理解您选定的CRM系统有哪些扩展功能,明白它能够做什么和不能做什么,您将会对如何利用CRM的扩展性匹配您的业务有一个清晰的见解。通过拥有这种见解,您可以消除很多不必要的定制内容,仅委托供应商开发必要的部分即可。
《知客CRM有哪些扩展功能》
2、是否可以延后定制开发
企业在没有开始实际应用CRM之前,有时会被一些想当然的观点和习惯所束缚,往往错误估计需求的重要性和定制开发所能产生的价值。所以,有时延后进行定制开发是一个很明智的决定,尢其是这些需求不影响关键业务和流程的情况下更应如此。通过一段时间的实际使用,您将能加深对当前CRM系统的理解,将会更清楚哪些定制内容确实必要,哪些可以被CRM系统提供的扩展性(或其他功能)替代,哪些在事后看来是鸡肋。通过这种实际使用和延后执行,您可以避免浪费时间和预算。
二、什么是模块化开发:为您的CRM添加一个全新的功能
您有一组个性化的需求,但您选择的CRM无法通过扩展性来做到这一点(这意味着该功能可能不在CRM软件的范围内)。虽然CRM的定义是帮助企业建立更好的客户关系和销售策略,但如果在经过评估后,您确定在您的CRM中集成该功能更有利于贵公司的管理和发展,那么为此规划并准备开发预算是有必要的——前提是CRM供应商支持并且能够实现您的想法。
在规划新功能时,您需要在售前顾问的帮助下,弄清楚该功能是完全独立还是与CRM的某些业务环节有关联,比如该功能与客户或订单互为影响,除了需要为客户和订单添加一些关联字段之外,还需要在操作、布局和权限上有所体现。缕清楚这种关联关系,可以让新功能与CRM的现有模块衔接得更好。
三、重定业务逻辑:对现有功能的调整
调整现有功能听上去可能会比添加一个全新功能简单一些。是的,部分情况下是这样,大多数CRM供应商可以通过添加一些IF条件来实现这种调整,所以,这不是问题。但如果您要调整的业务与CRM标准化的业务逻辑冲突,甚至是180度调头,那么这种工作对供应商来说并不轻松。事实上,很多CRM供应商不会接受这种会使某个被广泛采用的功能发生不具有普适性的改变。所以,在面临这种情况时,通常会有一个沟通和一方妥协的过程。
1、CRM供应商也许可以通过创建一个独立的版本来交付这种定制,但是,这之间将产生较高的额外维护成本(因为CRM供应商必须专门为您的特定需求增设一个新的版本,并需要独立维护,他们再也无法通过管理和编译一个软件项目来实现对所有用户的覆盖)。
2、较高的开发报价可能会使您减少这种调整或在供应商的指导下寻找替代方案。
四、与第三方系统对接的几个开发要点
如果您的企业除了CRM,还在运行其他信息化系统(比如ERP、OA等等),又或者您正在使用某个开放平台,您可能会希望CRM能够与这些系统集成,从而扩展平台业务或者使特定数据在不同的系统中同步。基于提高工作效率和数据复用率的目的,CRM与第三方系统的对接涉及到以下几个方面。
1、数据同步:与第三方系统进行数据的单向或双向同步,即在CRM中添加和更新数据能够实时体现到第三方系统,同理,在第三方系统添加或更新数据也应能及时同步到CRM。
2、单点登录:当贵公司存在几个系统时,您可能希望员工通过一个账号就能够登录所有这些系统。这需要您的CRM和其他系统都要支持类似OAuth2.0的开放授权机制。
3、开放平台对接:通过与微信、阿里云平台、有赞云、云端呼叫中心等开放平台对接,使CRM系统具备这些平台所授予的业务能力。这需要您事先购买并开通好这些平台的服务,获得授权后由CRM供应商做相应的对接。
这些对接操作看上去并没有增加CRM的功能,但事实上,这种产品延伸性质的开发工作更为繁琐且细致,尤其是与数据同步相关的对接。这是由于第三方系统通常是封闭的或是接口不太成熟,CRM供应商理解起来需要更多的学习和沟通时间,较长周期内需要与对方工程师不断的沟通确认,可能一个简单的字段同步都需要好几次协调。
所以,一旦涉及到与第三方系统的对接,开发周期通常会较长,而且报价通常较高且很难压缩。如果要减少开发成本,建议您尽量缩减数据同步的范围,比如只同步部分关键字段,并协调好三方人员的沟通。至于与阿里云等开放平台的对接,由于这些平台通常很成熟,公开的学习资料也较多,CRM开发人员只要有相应的学习和开发能力,就能够根据需求独立(或在少量沟通的情况下)实现。
《知客CRM如何与其他系统对接集成》
五、关于定制开发的报价
首先,我们要明白,绝大多数情况下,定制开发是要钱的(而且还不少)。不同的公司报价可能不一样,但大多数是根据工作日(开发、调试和部署所需的人天)来报价的。即使是这样,也存在很多“不公平”的因素。比如说,某个CRM供应商的产品相对更好,而且其开发团队的专业性、理解能力和效率也更高,那么,他们的报价往往更加合理。相对的,如果是不那么专业的CRM供应商,其报价就会有很多因自身原因造成的水份,而且,这可能很难拧干。所以,尽量寻找成熟的、产品体验更好的CRM厂商来定制,可以使您的开发成本维持在一个合理区间,并更有可能得到一个更好的开发结果。
六、定制开发和实施的区别
有些大型CRM通常没有定制的选项,比如Salesforce或SAP。这是因为,这种大型的CRM内置了大量的业务开关和用户编程组件。由于其足够强大和复杂(价格也很感人),理解并运用它们来改变当前业务流程和追加功能是一项专业的工作——只有具备一定技术和业务基础的人员才能完成。基于这种实施的难度,再加上大型CRM极大的溢价空间,所以其CRM实施费用通常远高于中小型CRM的定制开发费用。
大型CRM的可配置和实施过程相对于定制开发来说,有点像是 “我早就想到了,给我1000元” 和 “我现在就做,给我100元” 的区别。所以,考虑到需求匹配度、业务规模、预算和成本,不迷信“大就一定好”,寻找一个价格和功能合适的CRM并追加部分必要的定制开发工作通常是更加明智的选择。
结论
成功的定制开发不仅仅只是依赖CRM供应商的专业和需求理能解力,还要求企业正确梳理业务并平衡好定制的成本和价值。有些企业对CRM的实际应用缺乏足够的理解,高估了部分功能的必要性。这不但要支付不必要的采购成本,甚至有可能在落地使用后将这功能束之高阁。所以,当您在为贵公司选择CRM并确定定制开发方案时,请仔细评估我们以上的建议,从而做出更加明智的决定。
参考技术A 下面这个可以参考一下,具体怎么做,还得看你是什么CRM,你想要做什么:微软Dynamics CRM
4.0的最大特色,在于操作接口不同于一般CRM软件,它让使用者能以网页浏览器的接口存取系统,或者在Outlook中直接操作在Outlook中,这
套CRM能够追踪联络人的消息、工作进度或信件,它也具备离线功能,方便业务人员外出时使用。此外,它也结合了SQL
Server的报表服务,制作与检视报表上更加方便。工作流程也可自行新增、自订,让所有使用者依循制定的流程来工作。不过使用上最为明显的,还是
Dynamics CRM 4.0正式新增了正体中文语言套件,使用者操作系统时不必再为语言不通所困扰。
下面让我们实践一下Dynamics CRM的商业开发:
1.客户端事件脚本
·配置 OnLoad 事件
(1) 单击“表单属性”。
(2) 从“事件”选项卡中选择 OnLoad 事件,然后单击“编辑”。
(3) 在函数 OnLoad() 区域输入下面显示的代码,也可以在下面的文件中找到此代码:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
C:\Class Materials\Customization\Ch. 11\CheckCreditHold.js
var CreditOnHold = crmForm.all.creditonhold.DataValue;
if (CreditOnHold == true)
alert(该客户处于信用冻结状态);
(4) 选中“事件已启用”复选框。
(5) 单击“确定”
(6) 注释:如果您按照“演示:客户端代码示例”中的步骤进行操作,您将看到此事件已存在一些代码。仅需在现有代码的上面或下面输入您的代码即可。
(7) 注释:请严格按照代码显示的样子键入代码。JScript 区分大小写,且无代码验证。
·配置 OnSave 事件
(1) 从“事件”选项卡选择 OnSave 事件,然后单击“编辑”。
(2) 在函数 OnSave() 区域输入以下代码:
alert(正在保存客户);
(3) 选中“事件已启用”复选框。单击“确定”。
(4) 单击“确定”关闭“表单属性”窗口。
·为客户名称配置 OnChange 事件
(1) 选择“客户名称”字段。
(2) 单击“更改属性”。
(3) 单击“事件”选项卡。
(4) 选择 onChange 事件,然后单击“编辑”。
(5) 在函数 OnChange() 区域输入以下代码:alert(客户名称已更改);
(6) 选中“事件已启用”复选框。单击“确定”。
(7) 再次单击“确定”以关闭“字段属性”窗口。
·发布更改
(1) 保存并关闭客户表单。
(2) 发布客户实体。
·测试更改
(1) 创建新客户。
(2) 在“客户名称”字段中输入名称,然后单击“客户编号”字段。请注意,此时出现消息“客户名称已更改”。
(3) 单击“确定”关闭此消息。
(4) 在“管理”选项卡上,将“信用冻结”字段设置为“是”。
(5) 保存并关闭该客户。请注意,此时出现消息“正在保存客户”。
(6) 单击“确定”关闭此消息。
(7) 重新打开刚创建的客户。请注意,此时将显示消息“该客户处于信用冻结状态”。
(8) 单击“确定”关闭此消息。
wordend
相关阅读:
Microsoft Dynamics AX协助纺织业顶尖供应商获得优化的流程与全球支
Microsoft Dynamics AX物流业解决方案客户收益详解
Microsoft Dynamics AX 被Gartner列为领导者
2.IFrame
·打开客户表单
(1) 在导航窗格中,依次单击“设置”、“自定义”、“自定义实体”,然后双击“客户”。
(2) 单击“表单和视图”。
(3) 双击“表单”打开“客户”表单。
·添加选项卡和节
(1) 在“客户”表单上添加一个名为“网站”的选项卡。
(2) 在此新选项卡中添加一个名为“网站”的节。请勿显示节名称。
·添加 IFrame
(1) 选择该“网站”节并单击“添加 IFRAME”。
(2) 添加具有下列属性的 IFrame:
名称:网站
URL: http://CRMExt/Internet/NoSite.htm (http://CRMExt/Internet/NoSite.htm)
自动扩展以利用可用空间:选中
对其他属性接受默认值
·预览
确认页面已加载且显示 NoSite 页。
·保存并发布更改
(1) 单击“保存”。
(2) 单击“操作”,然后单击“发布”。
(3) 单击“保存并关闭”。
·测试 IFrame
(1) 打开下列任一客户:“A Bike Store”、“Cash and Carry Bicycles”或“Bike Universe”。
(2) 确认将在 IFrame 中显示“无网站”页。
(3) 打开上面列出的其他任一客户。
(4) 确认对于该客户将在 IFrame 上显示“无网站”页。
3.ISV.Config
·启用自定义项
(1) 在导航窗格中,依次单击“设置”、“管理”,然后单击“系统设置”。
(2) 选择“自定义”选项卡。
(3) 找出“自定义菜单和工具栏”节并单击查找按钮。
(4) 选择所有可用的值。
(5) 单击“确定”。
(6) 单击“确定”以保存系统设置。
(7) 关闭并重新打开 Microsoft Dynamics CRM
(8) 注意以下自定义项:
在全局菜单栏中有一个具有子菜单的 ISV 菜单。
在应用程序工具栏中有三个新按钮:Test、Web Only 和 Both。
(9) 导航到客户网格并注意以下自定义项:
名为“Test”、“Test”和“Web Only”的三个按钮
“其他动作”菜单下面的三个其他菜单项:
“Coming Soon”、“Sub test”和“Web Only”。
重要提示:如果已完成“演示:集成应用程序”,需要返回到在该演示的步骤 1 中保存的默认 isv.config。
wordend
相关阅读:
Microsoft Dynamics AX协助纺织业顶尖供应商获得优化的流程与全球支
Microsoft Dynamics AX物流业解决方案客户收益详解
Microsoft Dynamics AX 被Gartner列为领导者
·导出 isv.config
(1) 在导航窗格中,依次单击“设置”、“自定义”,然后单击“导出自定义项”。
(2) 选择“ISV 配置”
(3) 在“操作”工具栏中,单击选择“导出所选自定义项”。
(4) 单击“确定”确认对话框描述将导出的内容。
(5) 这将显示文件下载对话框。单击“保存”。
(6) 在“另存为”对话框中,在“文件名”中输入“ISVConfig”。单击“保存”。
(7) 单击“关闭”。
(8) 为 ISVConfig.zip 文件创建一个副本,重命名为 ISVConfigBackup.zip。
(9) 打开 ISVConfig.zip 文件。
(10) 提取 customizations.xml 文件将其放到方便的位置。
注释:在部署中,应当将 ISVConfigBackup.zip 文件复制到一个位置并对其进行保存,以防服务器出现灾难性故障。
·检查 isv.config
(1) 导航至 customizations.xml 文件并使用 Internet Explorer 将其打开。
(2) Internet Explorer 将限制文件打开活动的内容。
单击顶部的信息栏并选择“允许阻止的内容”。然后在安全警告对话框中单击“是”。
(3)折叠 <ROOT>、<ENTITY> 和 <SERVICEMANAGEMENT>节点以查看文档结构。
(4)展开根节点并找出 <CUSTOMMENUS>节点。
(5) 将 <Menu> 和 <SubMenu> 节点与应用程序菜单栏中的自定义 ISV 菜单相比较。
(6) 找到 <ToolBar> 元素并将 <Button> 元素与在 Microsoft Dynamics CRM
应用程序级别工具栏中看到的按钮相比较。注释:其中有一个按钮 <BUTTON AvailableOffline="true"
Client="Outlook" javascript="alert('test');"
Icon="/_imgs/ico_18_debug.gif">在 Web 应用程序中不可见,因为客户端属性指定为“Outlook”。
(7)展开 <Entities> 节点并找出 <Entity name=”account”>。
(8)请注意 <MenuBar>、<ToolBar>、<NavBar> 和 <Grid> 节点,并将它们与可在客户表单和客户网格中看到的自定义菜单、按钮和选项卡相比较。
·获得客户实体自定义的 URL。
(1)在导航窗格上,依次单击“设置”、“自定义”和“自定义实体”,然后双击“客户”。
(2)按 Ctrl+N 打开新窗口。此操作将显示出地址栏,以便您可以查看此页面的 URL。它看上去应与以下代码类似:
http://crm/AdventureWorksCycle/Tools/SystemCustomization/Entities/manageEntity.aspx?entityId=70816501-EDB9-4740-A16C-6A5EFBC05D84
(http://crm/AdventureWorksCycle/Tools/SystemCustomization/Entities/manageEntity.aspx?entityId=70816501-EDB9-4740-A16C-6A5EFBC05D84)
注意:用于部署的 GUID 将是唯一的。不能使用上面示例中的 GUID。
(3)复制此 URL 并将其粘贴到“记事本”中。在下面的步骤中会需要它。
wordend
相关阅读:
Microsoft Dynamics AX协助纺织业顶尖供应商获得优化的流程与全球支
Microsoft Dynamics AX物流业解决方案客户收益详解
Microsoft Dynamics AX 被Gartner列为领导者
4.导入潜在顾客
·使用 Visual Studio 2005 创建控制台应用程序
(1) 在“开始”菜单上,单击“Microsoft® Visual Studio® 2005”。
(2) 依次单击“文件”、“新建”和“项目”。
(3) 在“项目类型”中,展开“Visual C#”节点。
(4) 单击“Windows”。
(5) 单击“控制台应用程序”。
(6) 在“名称”文本框中,键入 CrmLeadImport。
(7) 在“位置”文本框中,键入或找到以下位置。C:\Class Materials\Extending\Ch3\CrmLeadImport
(8) 清除“创建解决方案的目录”选项。
(9) 单击“确定”。
·更改项目的默认命名空间
(1) 在解决方案资源管理器中,右键单击“CrmLeadImport”。
(2) 单击“属性”。
(3) 将“程序集名称”更改为:Microsoft.Crm.Training.ExtendingCrm.Labs.Chapter(3)CrmLeadImport。
(4) 将“默认命名空间”更改为:Microsoft.Crm.Training.ExtendingCrm.Labs.Chapter3。
·添加 CRM SDK Web 引用
(1) 在解决方案资源管理器中,右键单击“引用”。
(2) 单击“添加 Web 引用”。
(3) 在“URL”文本框中,键入http://crm/MsCrmServices/2007/CrmService.asmx
(4) 单击“前往”。
(5) 在“Web 引用名”文本框中,键入“CrmSdk”。
(6) 单击“添加引用”。
·复制程序源文件的内容
(7) 打开文件 C:\Class Materials\Extending\Ch3\CrmLeadImport\Program.cs。
(8) 将该文件的内容复制到解决方案中的 Program.cs 文件。
(9) 关闭示例 Program.cs 文件。
·在代码中引用 WSDL
在 Program.cs 文件中,为 WSDL 添加以下 using 语句
using Microsoft.Crm.Training.ExtendingCrm.Labs.Chapter(3)CrmSdk.;
·设置 Web 服务
添加以下代码来设置 Web 服务。确保在数据集中循环前添加该代码。
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
// Set up the CRM Service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for AD Authentication.
token.AuthenticationType = 0;
token.OrganizationName =“AdventureWorksCycle”;
CrmService service = new CrmService();
service.Url =“http://crm/MsCrmServices/2007/CrmService.asmx”;
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
·添加导入代码
(1) 在 Program.cs 文件中查找“TODO:Add Lead Import Code Here”。
(2) 对于 DataTable 返回的每一行,“潜在顾客”都将使用表 3-3 中的相应潜在顾客属性来分派值。
(3) 在 Microsoft Dynamics CRM 中针对每行创建潜在顾客。
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
// Import the leads
foreach (DataRow row in leads.Rows)
// Create the lead object and populate its values
// This code expects that all fields have values and are well formed
lead currentLead = new lead();
currentLead.subject = (string)row[“Topic”];
currentLead.firstname = (string)row[“First Name”];
currentLead.lastname = (string)row[“Last Name”];
currentLead.companyname = (string)row[“Company Name”];
currentLead.numberofemployees = new CrmNumber();
currentLead.numberofemployees.Value = (int)row[“Number Of Employees”];
currentLead.revenue = new CrmMoney();
currentLead.revenue.Value = decimal.Parse(row[“Annual Revenue”].ToString(), NumberStyles.Currency);
// Create the lead in Microsoft Dynamics CRM
Guid id = service.Create(currentLead);
·生成应用程序并进行测试
(1) 在解决方案资源管理器中,右键单击 CRMLeadImport 项目,然后单击“生成”以生成应用程序。
(2) 通过在调试器中运行或转到以下位置来测试该应用程序:C:\Class
Materials\Extending\Ch\CrmLeadImport\CrmLeadImport\bin\Debug
\Microsoft.Crm.Training.ExtendingCrm.Labs.Chapter(3)CrmLeadImport.exe。
(3) 运行控制台应用程序并打开 Microsoft Dynamics CRM 网站,以查看是否已将联系人成功地导入到潜在顾客中。 参考技术B 开源CRM基本上很难满足企业的实际业务需求,同时成本相对来说也较高,可以考虑一款支持用户个性化定制的CRM,百会的CRM就不错,它可以根据用户需求,在最短时间内定制出来并让用户看到效果。满意之后再付费,没有后顾之忧。定制工具简单,定制速度快。用户完全可以自己操作去满足未来业务的变化。另外它基于SAAS模式的在线租用形势,可以为企业节省购买硬件、安装调试、后期升级的费用成本。定期的售后回访还可以解决不少使用中的问题。
使用 Siebel CRM 的推荐开发实践?
【中文标题】使用 Siebel CRM 的推荐开发实践?【英文标题】:Recommended Development practices for working with Siebel CRM? 【发布时间】:2011-04-23 21:38:23 【问题描述】:我可能很快就会使用 Siebel CRM,我正在寻求有关使用现代开发实践和企业最佳实践的建议。
具体来说,我想就以下方面提出建议:
我们应该如何设置版本控制(特别是使用 Subversion)?我们的存储库应该有什么样的结构?我们应该如何处理分支和标签? 我们如何进行代码审查?我们如何对通过 Siebel Tools 所做的不一定有任何“代码”的配置更改进行同行评审?我们希望审查这些变更,以确保质量保证和知识转移,以及遵守变更管理政策。 哪种变更管理适用于 Siebel?当我们进行新的部署时,我们如何验证只有更改日志中列出的内容实际发生了更改? 我们如何自动测试我们的应用程序?甚至可以使用 Siebel 进行单元测试吗?我看到另一个建议使用 QTP 进行网络测试的问题,但还有其他可行的选项吗? 我们是否可以通过 Siebel 开发工作来实施持续集成实践? 对于命名约定和其他传统上属于“编码风格”准则的内容,您有什么建议? 我们应该如何将开发角色与 Siebel 管理员角色分开?我们的构建/测试/部署周期应该是什么样的?我不太可能为此获得任何新的昂贵工具,但如果有一个付费工具可以提供非常好的投资回报率,请随时提及。
如果您有其他类似的建议,但我的一个问题没有具体解决,请随时添加。
【问题讨论】:
【参考方案1】:SVN/CVS 不适合 Siebel,有几个原因 a) Siebel 对象是 db 对象,SVN/CVS 等存储 sif 等价的更改。 除了一些基本查询外,这些更改是无法查询的。 b) Siebel 工具和 SVN 之间的集成是松散耦合的集成。 理想的集成应该是与 Siebel 存储库和个人工具。
看看我们的工具 Object Hive,它解决了基于文件的版本控制的许多缺点。http://www.enterprisebeacon.com/siebel_version_control_tool.html Object Hive 专为 Siebel 版本控制而设计,它的一些功能包括: 1) 基于对象的存储库,类似于存储所有版本历史记录的 Siebel 存储库。 这使得查询更改和根据更改进行代码审查非常容易 2) 基于浏览器的 GUI,类似于 Siebel 工具,用于查询版本历史记录(无需合并 sif 文件进行更改)。 3) 无缝集成 - 直接与 Siebel 存储库集成。 个人开发人员没有凌乱的安装。 4) 强大的报告(实时和批量),可轻松识别任何时间段内的变化。 5) Oracle Exa-ready 认证。
【讨论】:
【参考方案2】:我们已经为我们的 Siebel 系统建立了一个完整的持续集成工具链,其中包括 Subversion、Hudson、Jira、Siebel ADM 和一些集成所有内容的自行编写的东西。
这很有帮助,尽管 Siebel “源代码”不像某些基于 Java 的项目那样适合标准 CI 方法。
而且,是的,可以将您的文件(包括 SIF)放入您的 Subversion 存储库,并将其用作部署的源。
我正计划在http://siebel-ci.blogspot.de/ 上写博客 - 请继续关注。
【讨论】:
我真的很想听听您是如何使用 SIF 文件作为部署源的;我从来没有设法让它正常工作 - 但听起来你有! 你能给我访问权限吗?【参考方案3】:我们应该如何设置版本控制(特别是 Subversion)?
使用 Siebel Tools 文档中提供的指南。但请注意,Siebel 不是从 SVN 中的文件构建的,因此它只能用作存档工具;您无法管理您的代码或从 SVN 构建。
我们的存储库应该有什么样的结构?我们应该如何处理分支和标签?
Siebel 开发代码不是在 SVN 中构建或管理的,因此这是一件毫无用处的事情。只需记下您构建 SRF 并导出 Repo 并与 SVN 中的标签或分支匹配的日期。
我们如何进行代码审查?我们如何对通过 Siebel Tools 所做的不一定有任何“代码”的配置更改进行同行评审?我们希望审查这些变更,以确保质量保证和知识转移,以及遵守变更管理政策。
使用 Siebel 工具来执行此操作。它有一个内置的“检查”工具,用于检查明显的错误(所有开发人员在签入之前都应该使用它)和一个差异工具(您需要检查同一对象的旧版本 - 您可以将其拖出 SVN如果你想)。我通常每天自动化检查工具一次并查看输出日志,并每天从 Siebel 服务器自动化构建 5 次,并在编译期间查找错误。可以通过 SVN 和标准 diff 工具进行差异化,但 Siebel 对象在 SVN 中存储为类似 XML 的文件,因此有时难以阅读。
什么样的变更管理适用于 Siebel?当我们进行新的部署时,我们如何验证只有更改日志中列出的内容实际发生了更改?
?
我们如何自动测试我们的应用程序?甚至可以使用 Siebel 进行单元测试吗?我看到另一个建议使用 QTP 进行 Web 测试的问题,但是还有其他可行的选项吗?
QTP 是标准方式 - 在 Oracle 网站上查看他们可能推荐的其他供应商。你也可以试试 Sikuli。
我们是否可以通过 Siebel 开发工作来实施持续集成实践?
不是真的。
对于命名约定和其他传统上属于“编码风格”准则的内容,您有什么建议?
查看 Siebel Bookshelf 的相应部分以了解当前的命名指南并始终使用这些指南。
我们应该如何区分开发角色和 Siebel 管理员角色?
不知道你的意思。
我们的构建/测试/部署周期应该是什么样的?
每晚构建一个新的 SRF 并从 Dev 导出一个新的 Repo。签入所有开发工作并完成单元测试后,获取下一个 SRF 和 Repo 并推送到测试环境中。此时,在正常的软件开发中,您将分支您的 SVN 并继续在主干上开发,但 Siebel 不同,因为您无法从 SVN 构建,并且您无法轻松地将大量文件从 SVN 恢复到您的构建环境中,所以您最好在开发中(并在完成之前暂停主线开发开发)或在测试环境中为测试进行热修复,并对开发环境进行丑陋的反向移植(实际上这是大多数人所做的)。构建一个新的 SRF 并从测试中导出一个新的存储库,每晚一次,一旦好了,为您的生产版本快照一份副本。 尽量坚持不超过 4 周的周期(1 周用于设计/原型设计。1 周用于开发,1 周用于测试,1 周用于错误修复和部署)——再长一点,规划的开销也会变得太大很棒。
让生活更轻松的提示:除了商业服务外,避免使用 eScript(否则它变得难以管理);使用所有 Siebel 内置工具,而不是自己滚动;尽量避免使用任何汇总功能(这似乎总是一个好主意,但它总是会破坏性能);将屏幕和视图的数量保持在最低限度;当您应该构建报告时不要构建视图;始终确保 EIM 表与您所做的架构扩展相匹配——即使您现在不使用 EIM;尝试构建集成对象以匹配您的逻辑模式 - 它们总是有用的(用于 Web 服务、XML 发布)并且事后构建的工作非常艰巨;比运行时事件更喜欢工作流策略;不要在没有索引的情况下添加新的排序或搜索规范——永远不要;不要对 LOV 表进行引用链接;总是打补丁;如果供应商没有说你可以做某事,那就永远不要做。
【讨论】:
以上是关于如何在crm里面进行开发的主要内容,如果未能解决你的问题,请参考以下文章