Microsoft Dynamics CRM Dashboards for Techies


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

 

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

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

 

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

 

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

 

第二步-决定哪些viewchartformdashboard需要客户化

这里会讨论的两种自定义:第一种是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,需要修改这些ChartXML定义。为了让创建和编辑简单一些,可以用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" />

加入上述条件后,chartdatadescription如下所示:

<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

现在,我们的viewchart已经创建,可以添加一个dashboardsolution中。按以下步骤:

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, QuotesOrders的信息。

 

总结

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

 

谢谢

 

Jackie Chen(陈攀)

 

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

 


Skip to main content