首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Epicor 10如何存储BPM前后处理之间的数据?

Epicor 10如何存储BPM前后处理之间的数据?
EN

Stack Overflow用户
提问于 2016-09-02 17:10:47
回答 2查看 4.7K关注 0票数 3

我正在将带有进度/ABL代码的Epicor V9系统迁移到带有C#代码的v10。我已经完成了大部分工作,但是我需要一种在BPM前后处理之间保存数据的方法。原始ABL代码状态中的注释:

描述:此函数存储来自BPM预处理操作的数据,它通过在调用程序上使用私有数据(存储属性)来实现.在BPM pre和BPM转发到过程调用期间,这仍然在范围内。

Epicor v9系统的设置使得Quote表单在.p文件中调用BPM前后处理。转进来的.p文件调用我试图在.i文件中迁移的代码。它看起来是一个简单的堆栈或字符串数组。

在Epicor 10中将使用什么来在BPM前后处理之间持久化数据,就像.i代码在V9中所做的那样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-08 14:21:48

为此您可以使用CallContext.Properties。

在E10.0中,CallContext.Properties是Epicor.Utilities.PropertyBag类型的,项目将按以下方式访问:

代码语言:javascript
复制
//Add
CallContext.Properties.Add("LineRef", LineRef);
// Get
var LineRef = (string)CallContext.Properties["LineRef"];
// Remove
CallContext.Properties.Remove("LineRef");

E10.1现在是System.Collections.Concurrent.ConcurentDictionary,类型的CallContext.Properties,它是一个内置于类型中的.Net,并且有更好的文档化。但是,从其中添加和删除条目的方法有如下更改:

代码语言:javascript
复制
//Add
bool added = CallContext.Properties.TryAdd("LineRef", LineRef);
// Get
var LineRef = (string)CallContext.Properties["LineRef"];  //Note: Do not use .ToString() this converts instead of unboxing.
// Remove
object dummy;
bool foundAndRemoved = CallContext.Properties.TryRemove("LineRef", out dummy);

要使用此方法,类需要从ContextBoundBase继承并实现唯一的上下文绑定构造函数,否则将得到'Ice.ContextBoundBase<Erp.ErpContext>.ContextBoundBase()' is obsolete: 'Use the constructor that takes a data context'

代码语言:javascript
复制
public partial class MyInvokeExternalMethodThing : ContextBoundBase<ErpContext>
{
    public MyInvokeExternalMethodThing(ErpContext ctx) : base(ctx)
    {

    }

在E10.1中,您可以将任何类型的对象放入其中,因此,如果您有一个字符串数组,您就不需要使用旧的技巧:tilde~分离的~值。

票数 3
EN

Stack Overflow用户

发布于 2016-09-04 00:36:05

我不知道如何使用来自.i的E9文件,但我知道如何在E10中的pre和post方法指令之间持久化数据。希望这能帮上忙。

有几种不同的方法可以做到这一点。如果在创建预处理bpm时,您选择了“执行自定义代码”选项。您可以使用callContextBpmData直接在代码中执行此操作。几乎所有字段名都类似于E9使用的用户字段(即Number01、Chracter01、Date01)。

在代码中,如果设置文本,只需键入:

代码语言:javascript
复制
callContextBpmData.Character01 = "some text";

或者,您可以直接在bpm设计器中设置它,而不需要任何代码。在designer左窗口窗格中,一直滚动到底部,您应该会看到所谓的“设置BPM数据字段”。把它拖到设计区。将其拖动到designer区域后,应在底部窗口窗格中看到设置字段及其值的选项。选择该字段,然后当您选择“值”时,您将被带到类似于baq计算字段设计器的窗口。可以使用静态数据或使用业务对象中的数据来计算值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39297632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档