Microsoft Dynamics CRM Dashboards for Techies

在上一篇博客中,我们介绍了销售经理Kevin能够使用chart和dashboard从Microsoft Dynamics CRM数据中快速获得信息。在这篇博客中,我们将利用Microsoft Dynamics CRM 2011的自定义化功能来从更深层的角度来做这种分析。

 

第一步 - 理解什么情况下需要自定义chart和dashboard

之前,我们介绍了Kevin怎样使用chart和dashboard编辑器来快速地显示Accounts, Contacts, Leads, Opportunities, Orders 和Invoices的数据实时状态。我们在上篇博客中创建的所有chart都只有一层分组。对于简单的分析,这已经足够了。但是,chart可以做更多!想象一下,一个account的chart不仅能够显示该account何时被修改,而且还能显示account目前的status,并对chart如何显示有更多的控制。

另外,我们之前创建的chart在dashboard上呈现,因此显示的是相应视图中所有记录的统计信息。但是,在一些情况中,客户经理希望看到与某一个特定的account相关的信息。

在这篇博客中,我们将介绍如何自定义这些复杂的chart,并将其嵌入在form中。

第二步 - 决定哪些view chart form和dashboard需要客户化

这里会讨论的两种自定义:第一种是chart会按照2个条件对记录进行分组:修改日期和当前状态。第二种是自定义account form,显示跟某个特定account相关的chart。(注:CRM中的任何form都可被自定义来显示chart)

下表总结了Kevin想要用dashboard来追踪的信息。

第三步 - 创建solution和其中的组件

注:这篇博客中介绍的chart自定义适用于系统chart和用户chart。但是,form只能被administrators/customizers来自定义。

如果自定义需要共享给组织中的所有用户,那么最好将其加到solution中并发布这个solution。这样,这个solution能够在不同的CRM组织中复用。

在Microsoft Dynamics CRM 2011中创建solution十分简单; 我创建了一个名为CRMTrackingDashboard的solution来作为这篇博客的展示。首先,我们使用“Add Existing”来添加实体到solution中。

 

第四步 - 创建解决你问题所需的view

我们需要为上述每一个实体创建视图。创建这些视图很直接。我已经为每个实体使用“Modified On Equals This Month”筛选条件,创建了新的视图。所有的视图都可以创建在CRMTrackingDashboard solution中,成为该solution的组件。

 

第五步 - 创建解决你问题所需要的chart

自定义包含额外的分组条件和显示属性的chart,需要修改这些Chart的XML定义。为了让创建和编辑简单一些,可以用chart编辑器创建一个基本的chart定义,导出为XML,手动修改并将其导入系统中。

 

我们将使用chart编辑器作为出发点,创建一个account chart定义的草稿。请根据以下步骤操作:

1. 在solution左侧面板中,点击Account实体

2. 点击Charts

3. 点击New Chart

4. 创建chart,设置分组条件为“Modified On”,设置chart的名称为“Daily Account Status”,如下图所示

 

5. 使用More Action菜单中的“Export Chart”来将chart定义导出

我们现在准备手动编辑chart定义,加入附加的分组条件。

由于我们第二个分组条件是Status,我们需要将其加到chart定义的“datadescription”部分。我们需要加入的条件为:

<attribute groupby="true" alias="groupby_status" name="statecode" />

加入上述条件后,chart的datadescription如下所示:

<datadescription>

    <datadefinition>

      <fetchcollection>

        <fetch mapping="logical" aggregate="true">

          <entity name="account">

            <attribute alias="aggregate_column" name="name" aggregate="count" />

            <attribute groupby="true" alias="groupby_column" name="modifiedon" dategrouping="day" />

            <attribute groupby="true" alias="groupby_status" name="statecode" />

          </entity>

        </fetch>

      </fetchcollection>

      <categorycollection>

        <category>

          <measurecollection>

            <measure alias="aggregate_column" />

          </measurecollection>

        </category>

      </categorycollection>

    </datadefinition>

  </datadescription>

为了能够设置chart显示的属性来达到我们的需求,我们还需要修改一下presentation:

<presentationdescription>
<Chart Palette="None" PaletteCustomColors="97,142,206; 209,98,96; 168,203,104; 142,116,178; 93,186,215; 255,155,83; 148,172,215; 217,148,147; 189,213,151; 173,158,196; 145,201,221; 255,180,138">
<Series>
<Series ChartType="StackedColumn" IsValueShownAsLabel="True" Font="{0}, 9.5px" LabelForeColor="59, 59, 59">
<SmartLabelStyle Enabled="True" />
</Series>
</Series>
<ChartAreas>
<ChartArea BorderColor="White" BorderDashStyle="Solid">
<AxisY TitleForeColor="59, 59, 59" TitleFont="{0}, 10.5px" LineColor="165, 172, 181">
<MajorGrid LineColor="239, 242, 246" />
<MajorTickMark LineColor="165, 172, 181" />
<LabelStyle Font="{0}, 10.5px" ForeColor="59, 59, 59" />
</AxisY>
<AxisX TitleForeColor="59, 59, 59" TitleFont="{0}, 10.5px" LineColor="165, 172, 181">
<MajorGrid Enabled="False" />
<MajorTickMark Enabled="False" />
<LabelStyle Font="{0}, 10.5px" ForeColor="59, 59, 59" />
</AxisX>
</ChartArea>
</ChartAreas>
<Legends>
<Legend Alignment="Center" LegendStyle="Table" Docking="Bottom" Font="{0}, 11px" ShadowColor="0, 0, 0, 0" ForeColor="59,59,59"></Legend>
</Legends>
<Titles>
<Title Alignment="TopLeft" DockingOffset="-3" Font="{0}, 13px" ForeColor="59, 59, 59"></Title>
</Titles>
</Chart>
</presentationdescription>

手动修改后的chart定义可以导入到CRM中,在More Action菜单中选Import Chart。

第六步 - 创建dashboard

现在,我们的view和chart已经创建,可以添加一个dashboard到solution中。按以下步骤:

1. 在solution中点击dashboard

2. 点击Create New dashboard

创建系统dashboard的步骤跟创建用户dashboard的步骤相同,可参照我们上一篇博客,因此我们这边不再重复。注意customizer可以将solution中的一个dashboard设为系统默认dashboard。系统默认dashboard应用于组织中的所有用户。系统默认dashboard设置能够被每个用户的用户默认dashboard设置所覆盖。

Dashboard 截图

第七步 - 自定义account form

我们之前提到我们希望显示跟某个特定account相关的信息,可根据以下步骤操作:

1. 在solution中点击account

2. 打开account form

3. 在account form中插入chart-根据以下步骤插入Orders Modified This Week图表

1) 在form编辑器ribbon上点击sub-grid

2) 实体选择orders

3) 选择“Show Related Records”

4) 选择视图“Orders Modified This Week”

5) 勾选“show chart only”

4. 重复第三步添加其他chart

下图为account form,它显示了跟该account相关的Contacts, Opportunities, Quotes和Orders的信息。

总结

从以上步骤可以看出,Microsoft Dynamics CRM 2011中的chart和dashboard使用简单并且功能强大。在Microsoft Dynamics CRM 2011中,因为dashboard能够被商业终端用户创建,对于开发人员来说,有很大的空间来增强这些dashboard的功能来满足广泛的商业需求。我们希望上述步骤能够帮助你的组织更好地使用这些功能。

谢谢

Jackie Chen(陈攀)

https://blogs.msdn.com/b/crm/archive/2010/10/20/microsoft-dynamics-crm-dashboards-for-techies.aspx