by community-syndication | Nov 5, 2014 | BizTalk Community Blogs via Syndication
Documentation When you are a product company, your priority is always on adding some cool features to the product. You are always in a race, competing to add as many features as possible to the product. There are always tons of requirements in your pipeline that needs to be delivered.It’s very common you spend weeks […]
The post Launching “BizTalk360 ASSIST” – Our documentation and support portal appeared first on BizTalk360 Blog.
Blog Post by: Saravana Kumar
by community-syndication | Nov 4, 2014 | BizTalk Community Blogs via Syndication
I was helping out a customer a few weeks ago to use the Web Deployment Tool to migrate applications and sites from IIS 6.0 to IIS 7.x/8.x, and ran into an error I had not seen before. I thought I’d
Blog Post by: Tomas Restrepo
by community-syndication | Nov 3, 2014 | BizTalk Community Blogs via Syndication
In Angular, it’s very easy for a directive to call into a controller. Working in the other direction – that is, calling a directive function from the controller – is not quite as intuitive. In this blog post, I’ll show you an easy way for your controllers to call functions defined in your directives.
First,calling a […]
Blog Post by: Lenni Lobel
by community-syndication | Nov 3, 2014 | BizTalk Community Blogs via Syndication
Probably this will be the first post of a series about “How to take control of your environment”, especially how to take back the control of your environment from the mistakes of developers. And don’t get me wrong I am mainly a developer but I also play the role of the administrator and sometimes I […]
Blog Post by: Sandro Pereira
by community-syndication | Oct 31, 2014 | BizTalk Community Blogs via Syndication
You may face the same challenges that I experienced when integrating Microsoft Dynamics CRM and BizTalk. The objective is to capture events in real-time and transmit them to an outside system without losing the order of events. There are two web methods exposed by CRM web services, “Retrieve” and “RetrieveMultiple”. The CRM web services provide […]
Blog Post by: Rakesh Gunaseelan
by community-syndication | Oct 30, 2014 | BizTalk Community Blogs via Syndication
I’m pleased to announce that the White Paper titled “The A-Y of running BizTalk Server in Microsoft Azure” which I have been working on for the last two months is now available to download on the BizTalk 360 White Paper collection. Writing this White Paper has been a momentous task, especially given that Microsoft Azure […]
Blog Post by: Johann
by community-syndication | Oct 28, 2014 | BizTalk Community Blogs via Syndication
In this post I’ll show you how to correctly configure diagnostics in an Azure Worker Role to push custom log files (NLog, Log4Net etc.) to Azure Storage using the in-built Azure Diagnostics Agent. Configuring our Custom Logger – NLog I’m not a massive fan of the recommended Azure Worker Role logging process, namely using […]
Blog Post by: modhul
by community-syndication | Oct 24, 2014 | BizTalk Community Blogs via Syndication
As you may know, Azure Machine Learning can execute R scripts. You can interactively see the output console. But what about retrieving the result as part of a production call to the API generated by Azure ML?
Let’s test with a word cloud example in R. Mollie Taylor has posted one here (https://gist.github.com/mollietaylor/3671518) that we can reuse in Azure Machine Learning:
The details on how to create an Azure ML workspace, insert a dataset and an R script can be found here:
- http://azure.microsoft.com/en-us/documentation/articles/machine-learning-walkthrough-develop-predictive-solution/
for R, just use that module:
The input of the Web API is set to the input dataset of the R Script and the output is set to the R Device port. As a reminder, here is how the inputs and outputs are positioned in an R Script module:
the detail is available in the help documentation.
In our case the interesting ports to publish are the following:
and
After running the experiment, we can see the result in Azure ML Studio:
So, how could we retrieve the pictures from an API that is published that way:
Here is some sample script in Python that shows how to do it. The script is a modified version of the sample given in the API Help page for Batch Execution. The idea is to get the base64 encoded pictures from the output file and decode them out to local disk.
# -*- coding: utf-8 -*-
# How this works:
#
# 1. Assume the input is present in a local file
# 2. Upload the file to an Azure blob - you'd need an Azure storage account
# 3. Call BES to process the data in the blob.
# 4. The results get written to another Azure blob.
# 5. Download the output blob to a local file
#
# Note: You may need to download/install the Azure SDK for Python.
# See: http://azure.microsoft.com/en-us/documentation/articles/python-how-to-install/
import urllib2
import json
import time
from azure.storage import *
import sys
import base64
import json
storage_account_name = 'a****obfuscated***4'
storage_account_key = '/aV****obfuscated***vXA76w=='
storage_container_name = 'benjguin'
input_file = ur"C:\be****obfuscated***os\WordCloud\conventions.csv"
output_file = ur'C:\be****obfuscated***os\WordCloud\myresults.csv'
input_blob_name = 'conventions.csv'
api_key = r'Cczx****obfuscated***WemQ=='
url = 'https://ussouthcentral.services.azureml.net/workspaces/a7c****obfuscated***756/services/d328e03****obfuscated***5c2/jobs'
uploadfile=True
executeBES=True
blob_service = BlobService(account_name=storage_account_name, account_key=storage_account_key)
if uploadfile:
print("Uploading the input to blob storage...")
data_to_upload = open(input_file, 'r').read()
blob_service.put_blob(storage_container_name, input_blob_name, data_to_upload, x_ms_blob_type='BlockBlob')
input_blob_path = '/' + storage_container_name + '/' + input_blob_name
debug_blob = blob_service.get_blob(storage_container_name, input_blob_name)
if executeBES:
print("Submitting the BES job...")
connection_string = "DefaultEndpointsProtocol=https;AccountName=" + storage_account_name + ";AccountKey=" + storage_account_key
payload = {
"Input": {
"ConnectionString": connection_string,
"RelativeLocation": input_blob_path
}
}
body = str.encode(json.dumps(payload))
headers = { 'Content-Type':'application/json', 'Authorization':('Bearer ' + api_key)}
req = urllib2.Request(url, body, headers)
response = urllib2.urlopen(req)
result = response.read()
job_id = result[1:-1] # remove the enclosing double-quotes
url2 = url + '/' + job_id
while True:
time.sleep(1) # wait a second
authHeader = { 'Authorization':('Bearer ' + api_key)}
request = urllib2.Request(url2, headers=authHeader)
response = urllib2.urlopen(request)
result = json.loads(response.read())
status = result['StatusCode']
if (status == 0):
print("Not started...")
elif (status == 1):
print("Running...")
elif (status == 2):
print("Failed...")
break
elif (status == 3):
print("Cancelled...")
break
elif (status == 4):
print("Finished!")
result_blob_location = result['Result']
sas_token = result_blob_location['SasBlobToken']
base_url = result_blob_location['BaseLocation']
relative_url = result_blob_location['RelativeLocation']
url3 = base_url + relative_url + sas_token
response = urllib2.urlopen(url3)
with open(output_file, 'w') as f:
f.write(response.read())
break
outputdata=open(output_file)
outputtxt=outputdata.read()
outputdata.close()
s=outputtxt.index('\"{')
e=len(outputtxt)
o1=outputtxt[s+1:e-3]
jsonresult = json.loads(o1)
i=1
for gd in jsonresult['Graphics Device']:
fname = output_file + "." + str(i) + ".png"
print 'writing png #' + str(i) + ' to ' + fname
f = open(fname, 'wb')
f.write(base64.b64decode(gd))
f.close()
i += 1
print("Done!")
Here is a sample execution output:
Uploading the input to blob storage...
Submitting the BES job...
Running...
Running...
Running...
Running...
Running...
Running...
Running...
Finished!
writing png #1 to C:\be***obfuscated***os\WordCloud\myresults.csv.1.png
writing png #2 to C:\be***obfuscated***os\WordCloud\myresults.csv.2.png
Done!
The output sent back by Azure ML looks like this:
R Output JSON
"{"Standard Output":"RWorker pushed \"port1\" to R workspace.\r\nBeginning R Execute Script\n\n[1] 56000\r\nLoading objects:\r\n port1\r\n[1] \"Loading variable port1...\"\r\npng \r\n 2 \r\nnull device \r\n 1 \r\n","Standard Error":"R reported no errors.","visualizationType":"rOutput","Graphics Device":["iVBORw0K***(...)***RvX/wFzB5s8eym6ZgAAAABJRU5ErkJggg==","iVBORw0KGgo***(...)***dVorBuiQAAAABJRU5ErkJggg=="]}"
You can see the pictures
well, Python does:
The resulting files are:
and
R has tons of great data visualisation. Have a look at those blogs for instance:
Benjamin (@benjguin)
Blog Post by: Benjamin GUINEBERTIERE
by community-syndication | Oct 23, 2014 | BizTalk Community Blogs via Syndication
Today I came across something I was keeping an eye on recently and that is the BizTalk
Flow Visualiser on Codeplex.
It basically looks at your tracking data and gives you back call details.
– Errors/Succes
– # of times something is called
– amount of time taken to process each stage.
It’s pretty easy to setup, there’s a site and a serviceand the rest you can guess.
http://biztalkflowvisualizer.codeplex.com/
Check it out and feell free to contribute!!
Enjoy!!!
Blog Post by: Mick Badran
by community-syndication | Oct 23, 2014 | BizTalk Community Blogs via Syndication
BizTalk360 is a full featured BizTalk Server Monitoring & Operations product. The product has matured from a small web based monitoring tool to a full blown feature rich product for monitoring BizTalk Server. The product includes features for BizTalk Operation support people like the Throttling analyzer, Topology Viewer, and Backup DR Monitor. Recently a new version 7.8 has been released with