上个帖子中, 我们创建了个发email的workflow. 但是我们邮件当中的tax 值是 hard code, 这在开发当中是不容许的. 那今天我们来把这个build in workflow用 input parameter 来加持一下. 我们需要创建一个contact 并且把值存进去 Key Name Value SalesTax 10 我们要定义Key Name, 这样才能通过name来读取value. 首先,我们打开solution 然后我们创建一个新的entitiy, 并且只需要在se…
Workflow: Use this process to model and automate real world business processes. These processes can be configured to run in the background or in real time and can optionally require user input. Workflow processes can start automatically based on spec…
首先我们需要确定windows workflow foundation 已经安装. 创建之后先移除MyCustomWorkflows 里面的 Activity.xaml 从packages\Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool.9.0.2.12\tools 路径中添加以下两个reference 复制下面的代码到我们新建的GetTaxWorkflow.cs 因为我们在CRM里面定义的custom entity是键值对的形式出现, 所以…
这里我们不着重讲解build in workflow. 但是, 如果要上手custom workflow, 我们必须要了解 build in workflow. build-in workflow 在input parameters 的加持下, 会成为custom workflow(C#) custom workflow(C#) 加上output parametser 通过build-in workflow 来实现workflow功能. 过程: service side event -> tri…
我们打开plugin registeration tool. 注册一个新的assembly. custom workflow 和 plugin注册的方法还有些不同. 这一步custom workflow就结束了. 因为custom workflow是通过business workflow来使用的 下一步,我们需要找到之前创建好的 processes 在process中, 让我们添加写好的workflow. 添加custom workflow之后, 让我们点击set properties. 然后给…
我们也deploy部署了custom workflows, debugging是开发当中不可或缺的一个步骤. debug workflow的步骤和debug有些许不一样: 1. install profiler 2. 从 列表中选择 plugin profiler 并且点击 profile workflow 按钮 Install Profiler 右击 Plugin-in Profiler -> start Profilling workflow. 这里workflow的start Profil…
上两节我们创建了一个 PreOperation的plugin 今天我们创建一个PostOpeartion的plugin和之前的plugin连接起来 当创建contact之后,我们要添加一个task给新创建的contact 首先,我们创建新的class, 并且取名TaskCreate.cs 其次,我们把代码Execute代码复制到TaskCreate.cs中 然后我们可以从Settings -> Customization -> Customize the System 中查看Task的Form…
让我们来看看官方文档是怎么讲的 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg326836(v=crm.8) Every time a running plug-in or Workflow issues a message request to the Web services that triggers another plug-in or Workflow to…
我们之前创建的plugin都是使用default的 run in User's Context. 理解就是使用正在登陆的security context用户信息 那有个问题,如果当前用户的security role没有相应的权限访问功能,我们就要安排一个新的用户 e.g. admin来记录信息而非当前用户. 让我们在registration tool更新TaskCreate class之后再CRM中打开新建Contacts. 我们可以打开activities发现follow up 里用户更改为在…
开始之前,我们要确认一下 Plugin 的 pipeline. PreValidation -> PreOperation -> Server Side System Main Event-> PostOperation PreValidation 是在security check 之前, 通常会用来加载外部数据和用户不相关的内容.PreOperation 是在security check 之后 服务器处理之前, 通常会用来做一系列的功能.PostOperation 是在System M…
Isolation Mode 也被称作为Plugin Trust CRM里面有两种plugin trust / isolation mode 1. Full Trust 只在OP系统中可使用,没有限制 plugin 挂掉之后会影响到CRM服务器运行. 可以访问服务器文件 2. Partial Trust or Sandbox 可在OP系统和online系统中使用 运行在特定的区域中,当plugin crash之后, CRM系统不会随之崩盘 Plugin 在secure layer底下运行, 并且…
源代码连接:https://github.com/TheMiao/Dynamics365CRM/blob/master/MyCRM/MyCRM/HelloWorld.cs 首先,我们需要创建一个.NET framework的class library. 其次, 我们要加入以下NuGet Package 接下来我们要assign 这个class 强名称签名使软件组件具有全局惟一的标识 接下来, 我们要在HelloWorld class中引用 IPlugin interface. 我们创建这个plu…
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases.这篇Java教程是为JDK 8而编写的, 文中所描述的例子与实践并没有对后续版本的引入做出改进. Creating Objects 创建一个项目 As you know, a cl…
创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」.比如,在一个博客应用中,你可能会创建如下几个视图: 博客首页--展示最近的几项内容. 内容"详情"页--详细展示某项内容. 以年为单位的归档页--展示选中的年份里各个月份创建的内容. 以月为单位的归档页--展示选中的月份里各…
今天我们再来看看Bound/Unbound Custom Action吧,什么是Custom Action?不知道的小伙伴们就out了,Dynamics CRM 2013就有了这个功能啦.和WhoAmI这类消息一样,我们都能够通过代码去调用它们.仅仅只是呢,今天我要给大家讲讲怎么用Web API的方式去调用它们. Custom Action也被划分为Bound和Unbound两种类型了,它们的详细含义和之前讲的Function和Action没有差别.唯一的差别就是,这里的Custom Actio…
Config data 可以在registering step 的时候来配置 配置好的config data 可以使用 constructor 来获取 Secure Config 和 UnSecure Config 的区别 Unsecure 在Unsecure里面的信息可以保存到导出的.zip solution当中 Secure 在secure里面的信息不会被导出到.zip 中, 可以放e.g. account, password 或者url 的这些敏感信息 首先,我们在registeratio…
Snapshots of the primary entity's attributes from database before(pre) and after (post) the core platform operation. 怎么理解这句话呢 简单的我们可以理解PreOperation与PostOperation的 entity中数据的镜像. 使用Pre-Entity镜像的一些案例: 1. 如果你需要对original data在modification之前做使用. 2. 如果你需要fo…
Golden Rules 1. Platform only passes Entity attributes to Plugin that has change of data. 2. If the user does not enter any value into attribute, the attribute is not avaible in AttributeCollection of Entity. 3. Always check if attribute is present i…
CRM 可以实现plugin之前的值传递. 我们可以使用SharedVariables 把值在plugin之间传递 实现plugins之间的传递非常简单,我们只需要用key value pair来配对传递. 读取的时候用key来获取相应key的value try { /* * SharedVariabls can share the variabls to different plugins * SharedVariabls will only work under same pipeline…
我们之前都学习到怎么添加,debug还有update plugin. 今天带大家过一下怎么从CRM instance当中删除plugin. 首先让我们打开Settings -> Customizations -> Customize the system 打开Plugin assemblies 然找到我们的MyCRM 当我们点击delete, 之后会报错. 错误信息会如下. 这是因为我们的plugin已经在Plugin Registration Tool 中 注册step步骤 我们需要去SDK…
这篇是plugin的终结. 通过之前的11期我们应该发现了plugin其实学习起来不难. async plugin 是把plugin的功能async run起来. e.g.  我们之前做过的preOperation的plugin会马上执行并且马上有数据显示在entity中. 但是async plugin会在async 形式下run, 使用场景是有很大的计算量或者处理量会导致CRM server进程被block 掉. 我们可以在plugin registeration tool中选择是否需要asy…
Execution Context 在代码执行的时候定义了event  context. 当form或者grid发生event时候传递了execution context. 可以在event handler中使用execution context执行各种tasks. e.g. 确定formContext, gridContext或者save event. function DisplayHelloWorld(executionContext) { var formContext = execut…
属性配置 1.配置application.properties文件 配置web访问端口和context path server.port = 8081 server.servlet.context-path = /demo 运行 2. 用application.yml进行配置 server: port : 8082 servlet: context-path: /demo2 启动,访问 注意,application.properties 比application.yml的优先级高…
由于业务逻辑需要,需要从某个 Entity 的 Record 中弹出其他 Entity 的创建窗口,并将当前 Entity 中的某些值传递到新打开的窗口中,具体的 JS 代码如下: //定义一个参数对象 var parameters = {}; //如果传递的变量是 lookup 类型的字段,需要分别存储 id 和 name var lookupValue =Xrm.Page.getAttribute("sFieldName").getValue();parameters["…
这里是作为开发贴的总结. 现在plugin和workflow系列已经终结. 希望这些教程能给想入坑的小伙伴一些帮忙. CRM中文教材不多, 我会不断努力为大家提供更优质的教程. Plugin 开发系列 创建一个dynamics 365 CRM online plugin (一) - Hello World Plugin 创建一个dynamics 365 CRM online plugin (二) - fields检查 创建一个dynamics 365 CRM online plugin (三)…
配置完IFD之后就可以为客户端电脑配置访问CRM了首先到CA证书服务器中把证书下载下来,打开CA服务器的浏览器,输入地址http://stg-ad/certsrv/ 其中stg-ad是机器名之后点击下载CA证书 点击下载证书,为证书取个名字.这个证书是用在客户端安装的 点击保存后会让你选择一个路径并为证书命名,之后记住路径,把证书拷出来,保存起来. 拿到保存后的证书后,把证书拷贝到需要访问CRM的电脑上进行安装.双击证书 点击安装证书 选择本地计算机,下一步 选择好后点下一步 点完成 弹出证书安…
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by step Dynamics CRM 2013安装 >. 本文演示如何使用Microsoft Dynamics CRM Deployment Manager来创建一个新组织. 演示环境使用的是CRM 2013,服务器架构如下图所示,系统中已经有了一个组织Philips,其数据库在计算机Eindhoven-SQ…
在 Dynamics CRM 的开发中,我们时不时需要创建 Entity 对象,而对于如何创建 Entity 对象,在 C# plugin 和 JS 的写法存在些许差异. 一.C# Plugin 创建 Entity 对象: 在 C# plugin 中,只要 new 一个对应类型的 Entity 对象,就可以操作该对象的属性设置初值,在之前的博客中已经写了在 C# plugin 中各个类型的字段是怎样赋值的,在这里就不作具体的代码展示了. Account account = new Account…
在 Dynamics CRM 开发中,我们可以使用 JavaScript 在前端对 Entity Form 进行数据操作,与此同时,我们也可以使用 C# 写后台插件,其中就包括了 Plug-in Class 和 Workflow Class,如下图所示,这里也简单阐述下两者在使用上的区别: 图1 Plug-in Class 和 Workflow Class 一.调用范围: Plug-in Class 是在对 Entity 的创建(Create)和更新(Update)时进行调用,而 Workflo…
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复267或者20180311可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 在Dynamics CRM中快速查找功能是个让人喜欢的功能,在每个实体的列表界面的右上角有个搜索记录的功能,输入搜索关键字回车后就会执行搜索. 还有Dynamics 365的全局搜索功能也是对指定实体(系统管理员配置)执行快速查找并显示结果. 用户很喜欢快速查找功能,而且在实施项目过程…