URLs) in a single location without repeating them in all Java
Scripts or plugins so that all your form scripts and plug-ins can access them.
This way you need to change those variables in only one
location when you go from one environment to the other (i.e. Dev to Test and
UAT etc.)
In an earlier post I discussed how to access these
configurations in Java Scripts. So here I am going to write how to do it in
plugins or custom workflow activity.
Let’s say you have created an XML web resource named
new_ApiConfiguration.xml.
And assume your web resource looks like this:
<SacConsultingApi>
<CreateApiUrl>https://webapi.sacconsulting.com.au/crmdev/api/record?id=</CreateApiUrl>
<UpdateApiUrl>https://webapi.sacconsulting.com.au/crmdev/api/update?recId=</UpdateApiUrl>
<ExpireApiUrl>https://webapi.sacconsulting.com.au/crmdev/api/expire?recId=</ExpireApiUrl>
</SacConsultingApi>
And you can access these configurations inside you custom plugins
or workflow activities by using the below method.
Declare the variables on top.
string CreateApiUrl;
string UpdateApiUrl;
string ExpireApiUrl;
private void ReadWebResourceAndGetData()
{
QueryExpression query = new QueryExpression
{
EntityName = "webresource",
ColumnSet = new ColumnSet("name", "content"),
Criteria = new FilterExpression
{
Conditions = {
new ConditionExpression
{
AttributeName = "name",
Operator = ConditionOperator.Equal,
Values = { "new_ApiConfiguration.xml"}
}
}
}
};
EntityCollection ec = service.RetrieveMultiple(query);
if (ec.Entities[0].Attributes.Count > 0)
{
WebResource webResource = null;
string webResourceContent = string.Empty;
webResource = (WebResource)ec.Entities[0];
if (webResource.Attributes.Contains("content"))
{
byte[] binary = Convert.FromBase64String(webResource.Attributes["content"].ToString());
webResourceContent = UnicodeEncoding.UTF8.GetString(binary);
}
if (!string.IsNullOrEmpty(webResourceContent))
{
XmlDocument xml = new XmlDocument();
xml.LoadXml(webResourceContent);
XmlNodeList xnList =
xml.SelectNodes("CreateApiUrl");
if (xnList.Count > 0)
{
CreateApiUrl =
xnList[0].InnerText;
}
xnList = xml.SelectNodes("UpdateApiUrl");
if (xnList.Count > 0)
{
UpdateApiUrl =
xnList[0].InnerText;
}
xnList = xml.SelectNodes("ExpireApiUrl");
if (xnList.Count > 0)
{
ExpireApiUrl =
xnList[0].InnerText;
}
}
}
}
Remember to change the name of the web resource to your web
resource name.
This way when you deploy solutions from one environment to
the other you don’t need to go and change your configurations in hundred
places.
No comments:
Post a Comment