Is it possible to extend the WebJobs SDK? - azure-webjobs

Is there a way to extend the Azure WebJobs SDK? If I want something other than a queue, blob or table to trigger my job function.

As of the 1.1.0 release of the WebJobs SDK you can now write your own binding extensions. See the azure-webjobs-sdk-extensions repo for more information. That repo contains several extensions built on the new extensibility model that you can use in your applications (e.g. TimerTrigger, FileTrigger, SendGrid, etc.) Those extensions also serve as a demonstration of how to author your own extensions. The Binding Extensions Overview section of the Wiki walks you through the process of creating your own extension, starting from a sample template.

Sorry, that's not possible yet. However, you can always write your own event, use JobHost.Call inside it to invoke the function(s) and get all the benefits of WebJobs SDK (logging on dashboard, bindings, etc.)

Related

Does anyone know how to retrieve the list of tasks in Camunda 8, without using tasklist?

I am currently evalauting Camunda, having previously used version 7 in the past which seems to be significantly more open source than version 8.
I am aware that tasklist and an official tasklist-api exist, however they are only permitted during development and testing without a license.
In Bernd Rücker's medium post How Open is Camunda Platform 8?, there is a section:
A path to production with source-available software
...
Additionally, you will need to find solutions to replace the tools you cannot use.
Tasklist
You will need to implement your own task management solution based on using workers subscribing to Zeebe as described in the docs. That also means you have to build your own persistence to allow task queries, as the Tasklist API is part of the Tasklist component and is not free for production use.
I have tried to search the zeebe source for any hints, but the only job/task related APIs I seem to be able to find are:
activateJobs
completeJob
I do not believe that these could be the endpoints that tasklist uses as the jobs have to be manually claimed by user interaction from the UI.
Does anyone know how this is achieved?
Your own zeebe exporter allows you to export any events the engine produces, such as user task state updates. You could store this information in a data sink of your choice and and implement an API on top of it.
See, e.g. https://camunda.com/blog/2019/05/exporter-part-1/

Working with google cloud storage in julia applications

I have a query related to the google cloud storage for julia application.
Currently, I am hosting a julia application (docker container) on GCP and would like to allow the app to utilize cloud storage buckets to write and read the data.
I have explored few packages which promise to do this operation.
GoogleCloud.jl
This package in the docs show a clear and concise representation of the implementation. However, adding this package result in incremental compilation warning with many of the packages failing to compile. I have opened an issue on their github page : https://github.com/JuliaCloud/GoogleCloud.jl/issues/41
GCP.jl
The scope is limited, currently the only support is for BigQuery
Python package google
This is quite informative and operational but will take a toll on the code's performance. But do advise if this is the only viable option.
I would like to know are there other methods which can be used to configure a julia app to work with google storage?
Thanks look forward to the suggestions!
GCP.jl is promising plus you may be able to do with gRPC if Julia support gRPC (see below).
Discovery
Google has 2 types of SDK (aka Client Library). API Client Libraries are available for all Google's APIs|services.
Cloud Client Libraries are newer, more language idiosyncratic but only available for Cloud. Google Cloud Storage (GCS) is part of Cloud but, in this case, I think an API Client Library is worth pursuing...
Google's API (!) Client Libraries are auto-generated from a so-called Discovery document. Interestingly, GCP.jl specifically describes using Discovery to generate the BigQuery SDK and mentions that you can use the same mechanism for any other API Client Library (i.e. GCS).
NOTE Explanation of Google Discovery
I'm unfamiliar with Julia but, if you can understand enough of that repo to confirm that it's using the Discovery document to generate APIs and, if you can work out how to reconfigure it for GCS, this approach would provide you with a 100% fidelity SDK for Cloud Storage (and any other Google API|service).
Someone else tried to use the code to generate an SDK for Sheets and had an issue so it may not be perfect.
gRPC
Google publishes for the subset of its services that support gRPC. If you'd prefer to use gRPC, it ought be possible to use the Protobufs in Google's repo to define a gRPC client for Cloud Storage

Is the "dialogflow-fulfillment-nodejs" library still maintained or do I need to switch to the "Dialogflow API: Node.js Client" library?

I realized in the github of the library "dialogflow-fulfillment-nodejs" that there are no new updates and many discussions about whether the library will continue even in the "README.md" they wrote "Warning: This library is no longer maintained. It should only be used when using the inline editor. "
I've been doing tests with the In-line Editor on DialogFlow but I realized that when I changed the Cloud Functions the version from Node 8 to Node 10, because Firebase says that the support for Node 8 will end, I thought about changing the version, however I had a lot of problems when doing Deploy in the In-line Editor so I thought if the problem of the library itself that still uses Node 6 in package.json?
Is that a problem with this library that still uses Node 6 so when changing to Node 10 in Cloud Functions he stopped doing Deploy?
What should I use in my webhook service?
As you can read from the public repository, the library is not longer maintained. However, it also says:
... it should only be used when using the inline editor
Also when looking at the Dialogflow console under the Fulfillment section the Inline Editor option when enabled, it states:
Newly created cloud functions now use Node.js 10 as runtime engine.
Check migration guide for more details.
For a graphical reference, see img.
I've created my last Cloud Function recently and can confirm that when looking at the package.json file the engine has the version properly set.
So even if the library is no longer maintained, the support within the Inline Editor remains available and I don't see anything about it being deprecated on their documentation. My conclusion is that you can use it with confidence.
Finally, regarding your issue about deploying the Cloud Function using the Inline Editor, it may be because of something else. My guess is that you or someone with the required permissions, made a change on the Cloud Function directly and not using the Inline Editor; thus, falling in an scenario mentioned on the limitations section, that states the following:
If you modify your code with the Cloud Functions console, you can no
longer use the inline editor to modify your code. Your function will
continue to provide fulfillment for your agent, but future edits must
be made in the Cloud Functions console.
If you would like to keep using Inline Editor to deploy your future changes, I suggest you to backup your Cloud Function, and create a new one using Inline Editor (for that you may need to disable the Inline Editor and remove manually the Cloud Function previously created, remember to backup your code and configuration).
The Dialogflow API: Node.js Client is not a library for use in the fulfillment webhook. It is meant to be used as a client that calls Dialogflow to either build/edit agents or submit content to determine a matching Intent.
For webhooks, you're expected to parse the JSON yourself and send a validly formatted JSON as part of the response. While the dialogflow-fulfillment-nodejs library isn't deprecated, as noted, it also isn't maintained. So if Dialogflow ES ever does get updates - the library likely will not. There are third-party libraries such as multivocal that are being worked on to provide fulfillment, and these can work in the inline editor.

AWS step functions - Any way to create the state machine graphically?

When creating a state machine with step functions, we use Amazon States Language (ASL). A visual workflow is rendered showing the state machine.
Is there anyway to create the state machine visually to begin with? Creating the states with something like drag and drop and then updating the details for, let's say the specific Lambda that needs to be invoked?
I see that AWS does not provide this feature, and I couldn't find a third party that does, wondering if there's something I didn't find.
Bachman,
I found this 3rd party draw.io plugin to create and export ASL: https://github.com/sakazuki/step-functions-draw.io. I have not used it myself, so I cannot speak to the quality/correctness of it. It looks like a pretty nice tool though!
Update - Here is a youtube video of it in action: https://www.youtube.com/watch?v=NrMcFdTdhhU
Hope this helps!
FYI
Workflow Studio is a new visual workflow designer for AWS Step Functions that makes it faster and easier to build workflows using a drag and drop interface in the AWS console.
https://aws.amazon.com/about-aws/whats-new/2021/announcing-workflow-studio-a-new-low-code-visual-workflow-designer-foraws-step-functions/.

ABBYY FlexiCapture web service in workflow

I need to implement a custom workflow for a batch type. Inside this workflow it is necessary to communicate with another system through a web service (REST).
Is there any predefined API for ABBYY I can use?
I only found solutions to call ABBYY through other systems, not calling other systems from ABBYY.
Thanks in advance.
I've tried to implement a solution inside Abbyy, but since I'm using FlexiCapture 11, only .Net Framework 3.5 is supported. Because I have to use objects which require .Net version 4.5 I've switched to the solution to call an external program from Abbyy which does all the web service implementation.