创建一个dynamics CRM workflow (一) - Introduction to Custom Workflows
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 specified conditions or can be started manually by a user.
简单一句话总结, workflow可以实现自动化.
Action:
Use this process to create a new operation that is not available in a standard Microsoft Dynamics CRM installation or to combine multiple disparate operations into a single operation.
Action是workflow中的动作
什么时候使用Workflow来代替plugin
大部分时候使用workflow的骚操作也是可以用plugin来实现. 但是一下两个情况你可以用workflow来实现
- 在business logic当中的改变做更改的人是普通用户而不是开发者,或者换一句话来说是这些改动不应该是依赖开发者去做.
- 需要让用户去手动触发这些workflow 逻辑. 用户可以在form中或者grid中手动自己触发而不是设置好的触发程序.
Workflow的 life cycle
1. 当workflow创建的时候, workflow是在draft状态. 如果需要使用workflow,必须activate workflow才可以运行. 当workflow被activate之后, 这个workflow会被subscribe到一个特定的CRM events. 当这些events在CRM中被trigger之后, workflow的snapshot快照dependencies(附属)和input parameters 会被创建, 并且新的async operation 操作被添加到async service queue Manager当中. async operation 代表 workflow 执行的工作 并且在queue中等待执行, 一直保持ready 状态.
2. 当async operation 开始执行, windows workflow foundation run-time engine 会创建一个workflow instance, 并且关联到这个operation中, 并且state会从ready改变成locked.
3. async operation 和 workflow instance 在每一个transition一起update 当async operation blocked的时候, windows workflow foundation run-time engine 把workflow instance 放到 suspended 状态, 并且从memory移除. 当suspended 状态 satisfied, workflow instance 重新加载到memory中.
4. 当workflow instance 的状态改为 ready 的时候, workflow 执行状态会改为locked. 在一般的案例中, workflow instance 移到 completed 状态 当所有的workflow activities completed.
Workflow 小tips
Dynamics CRM中有basic workflow logic 可以实现简单的功能
如果想要实现更高级的功能, 需要用代码来extend basic workflow.
Custom workflow Activities default设定是async. 手动可以调节为sync模式
custom workflow activities是在system main event 执行之后才开始执行
数据交互会稍微比较慢
创建一个dynamics CRM workflow (一) - Introduction to Custom Workflows的更多相关文章
- 创建一个dynamics CRM workflow (四) - Development of Custom Workflows
首先我们需要确定windows workflow foundation 已经安装. 创建之后先移除MyCustomWorkflows 里面的 Activity.xaml 从packages\Micro ...
- 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
上个帖子中, 我们创建了个发email的workflow. 但是我们邮件当中的tax 值是 hard code, 这在开发当中是不容许的. 那今天我们来把这个build in workflow用 in ...
- 创建一个dynamics CRM workflow (二) - Build in Workflows
这里我们不着重讲解build in workflow. 但是, 如果要上手custom workflow, 我们必须要了解 build in workflow. build-in workflow 在 ...
- 创建一个dynamics CRM workflow (五) - Deploy Custom Workflows
我们打开plugin registeration tool. 注册一个新的assembly. custom workflow 和 plugin注册的方法还有些不同. 这一步custom workflo ...
- 创建一个dynamics CRM workflow (六) - Debugging Custom Workflows
我们也deploy部署了custom workflows, debugging是开发当中不可或缺的一个步骤. debug workflow的步骤和debug有些许不一样: 1. install pro ...
- 创建一个dynamics 365 CRM online plugin (九) - Context.Depth
让我们来看看官方文档是怎么讲的 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide ...
- 创建一个dynamics 365 CRM online plugin (七) - plugin当中的Impersonation角色
我们之前创建的plugin都是使用default的 run in User's Context. 理解就是使用正在登陆的security context用户信息 那有个问题,如果当前用户的securi ...
- 创建一个dynamics 365 CRM online plugin (十) - Isolation mode or trust mode
Isolation Mode 也被称作为Plugin Trust CRM里面有两种plugin trust / isolation mode 1. Full Trust 只在OP系统中可使用,没有限制 ...
- 创建一个dynamics 365 CRM online plugin (四) - PreValidation
开始之前,我们要确认一下 Plugin 的 pipeline. PreValidation -> PreOperation -> Server Side System Main Event ...
随机推荐
- VS2015 C++ 获取 Edit Control 控件的文本内容,以及把获取到的CString类型的内容转换为 int 型
UpdateData(true); //读取编辑框内容,只要建立好控件变量后调用这个函数使能,系统就会自动把内容存在变量里 //这里我给 Edit Control 控件创建了一个CString类型.V ...
- lucene_06_solr域
solr域在家目录下面\solr_home\collection1\conf中的schema.xml里面定义. 域必须要先在schema.xml下定义后才能使用. solr在操作Field域时需要在s ...
- 05springMVC数据格式化
数据格式化简介 内建的格式转换器 使用内建格式转换器示例 字段级别的解析/格式化 集成到Spring Web MVC环境 1 数据格式化简介 对属性对象的输入/输出进行格式化,其实是属于“类 ...
- Python标准库:内置函数range(stop) range(start, stop[, step])
本函数是产生一系列序列的数组,返回迭代子.參数stop是终止的数字:參数start是指明開始数列開始值:參数step是数列之间的差值. 因此这个函数就是产生以start为起点.以stop为终点,以st ...
- netty 学习记录一
近期在学习netty相关知识,认为<netty 权威指南>这本书还是挺好的,适合我这样的刚開始学习的人.加上netty本身自带的很多样例,学起来还是挺有兴趣的.简单记录下, 一般serve ...
- 简陋版:基于python的自动化测试框架开发
项目背景: XXXX银行项目采用的是B/S架构,主要是为了解决银行业务中的柜员.凭证.现金.账务等来自存款.贷款.会计模块的管理. 手工弊端: 1.项目业务复杂度高,回归测试工作量大2.单个接口功能比 ...
- C++开发人脸性别识别教程(19)——界面美化
在这篇博文中将完毕<C++开发人脸性别识别>的收尾工作.主要内容分为两部分:加入视频暂定功能.界面规范化. 一 视频暂停功能 严格来说这个视频暂定功能算是视频人脸性别识别的一个遗留问题,本 ...
- root用户不能改动iptables
需求:因为防火墙做了IP和port限制,如今须要加入一条规则使之能够訪问指定的IP和port. vi /etc/sysconfig/iptables, 加入完毕后,wq保存,提示文件仅仅读无法保存.! ...
- 微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决
微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决 echostr校验失败,请您检查是否正确解密并输出明文echostr 异常java.securi ...
- Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧
(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,由于SDK未完毕,不附上函数/方法/接口的超链接. 这次最 ...