(Snowpal Podcast: Part 4/N) Salesforce: Anypoint Design Center, Anypoint Code Builder IDE
In this podcast episode, Krish explores the Code Builder IDE and the Eclipse-based Anypoint Editor. He also delves into the DataWeave language and its syntax, functions, and script structure. Krish shares his experience with using these tools and provides insights into troubleshooting issues with AnyPoint Studio. He emphasizes the importance of learning by doing and using playgrounds to experiment with different features. He discusses the process of working with flows and packaging and deploying them.
Krish goes on to discuss the process of getting started with a new tool and the importance of hands-on experience. He explores various MuleSoft components, including Code Builder, Design Center, and AnyPoint Studio. Krish also introduces Exchange, a platform for sharing and discovering APIs. Finally, he mentions the concept of data graphs and concludes with recommendations for using pre-built APIs to save time and effort.
Go to Part 3.
Part 4
Transcript
Krish (aws.snowpal.com) (00:01.634)
Hey there, hope you’re doing well. Welcome back to Snowpal Software Development and Architecture podcast. This is podcast number four in this Salesforce Anypoint series. In the last one, we looked at the design center, dug a little bit deeper, got some understanding, created some basic rest endpoints, et cetera, right? Using Anypoint. Now we’re gonna continue, just look at…
the Anypoint code builder ID in this podcast. See, you know, take a first look. Again, I’ve not used any of these tools before. So I’m just gonna learn, we’re gonna learn together and you know, and then see how it goes. So without further ado, let’s continue.
I’m just gonna share my entire screen, my desktop. Okay, cool. So we were looking at the Hello World API in the last podcast. If you haven’t seen it, number three, just go back and check that out. And this one, let’s go look at the Code Builder IDE and see how that looks. So I launched this one here and I just did like it’s been like five or 10 minutes of playing around. Let me close these things.
Take a first look. This is the VS Code version, right? You can also download it on your desktop and running it on the browser. But as I was going through the, just looked at a couple of their pages, it seemed like a lot of the documentation spoke to an Eclipse based IDE and Anypoint Studio. So I don’t know if everything that maybe in the past, it was just a studio and now they added support, you know, a browser based support for this IDE. VS Code works beautifully as we all know. So maybe.
I’m speculating, I have no idea. Maybe some of it was ported over and maybe folks use both interchangeably. So again, complete speculation, I have no idea. At least from the 10 minutes I’ve seen, that’s what I can gather. With that said, I think there’s things that I do see in the documentation that specifically refers to the Eclipse-based Anypoint editor.
Krish (aws.snowpal.com) (02:10.402)
which I also downloaded by the way, it took like a few minutes. So I didn’t want to do it during the recording. That’s literally the only other thing I did between the third podcast and this one. And maybe one or two other things. But so let’s look at that, right together. So I went in, I launched the, if I do a launch, you’ll see it’s gonna bring up, it’s gonna prepare the cloud ID. And this is pretty standard stuff that we’ve come to expect with VS Code.
So I just have another one here, so I’m going to close that one. Let’s see. That’s the first thing I did. The builder, and then I also downloaded the one for the desktop, just to see if there was any difference in functionality or plugins. I didn’t expect that to be any, and there isn’t because the documentation, a lot of it referred to the Anypoint Studio. Like when I Googled some of the documentation, like how to add a Mongo connector, was it this one?
Krish (aws.snowpal.com) (03:16.586)
Yeah, let’s say adding, I was looking for the mule palette and I could not find it on VS Code. So I don’t know if it’s available. Like if you search for VS Code, mule palette, it talks about another extension, which is called dataweave. I don’t know if this is different or this is a replacement to the mule palette. Doesn’t look like that. Let’s start. Maybe.
Maybe it is, maybe it is not. Let’s play with it and try to figure this out, right? So I did create like a basic, very basic one. So I thought it was in a data V. So I went ahead and created, was it this one? No.
Krish (aws.snowpal.com) (04:07.114)
this, yeah. I just went by that example, created, I don’t know, I just said dataweave, create integration mapping, and then I gave it a name, it popped up this name. And then from the example, I copy pasted a couple of lines. Basically a date conversion function that you can call. You know, there is a test there as well. So, and then if you run this, you need to make sure you put that in the right directories and the structures, because otherwise it did not really give me any design time errors, it was fine.
when at runtime it complained because the directory structure did not match. It says source main DW and test DW. I think I didn’t have one of those directories for instance. So again, it did not complain at design time but it complained at runtime. And error wasn’t particularly very intuitive either. So this is doing a date conversion, right? So it’s calling a date conversion function. Let’s go here.
Krish (aws.snowpal.com) (05:04.99)
Oh, am I? I am on the test. Oh, sorry, I, no, that is correct.
Krish (aws.snowpal.com) (05:17.506)
Let me close this. Let me go here. So that’s the function. And now let me run this. Okay, that works. I’m just trying to get to it. Okay. And it takes me here. So, you know, this is very, very basic, right? There’s a daytime conversion. It takes a daytime, you know, argument and a format, and it returns a conversion as a string essentially. So as I understood DWL,
If you search for DWL file extension, that’s not it. I should just search for, what does it, any point. DWL file extension. Yeah, I guess it’s data view. It’s looks like a custom MuleSoft DSL, DWL data view language. So you need to just get used to that syntax if you’re gonna be doing that work. So you can just look up data view language or they have a playground.
Krish (aws.snowpal.com) (06:16.086)
Yep, I haven’t seen this one. I’m just looking at this now. Let’s see, payload this message and then it prints out. So I guess we’ll try to add another message. Does this work?
We’ll just do a payload.anothermessage. Okay, so it’s a DSL, I guess there’s a JSON, and then this is how you read the values off of that. And we’re seeing output JSON for instance. Let’s see, what other, yeah, this. Okay, so if you go to strings, and then where was I, the playground? I guess we could just do.
Krish (aws.snowpal.com) (07:03.946)
Hello? Really. Oops, not there. Tutorial. Output JSON. What did I do differently? Output. OK, maybe it’s this one here.
Krish (aws.snowpal.com) (07:27.114)
Yep, so I guess can we have both? Output application JSON. And then we have this.
Krish (aws.snowpal.com) (07:41.215)
It does not.
Maybe there’s a print or something along those lines. I have no idea, let’s see. Maybe it’s not puts.
Krish (aws.snowpal.com) (07:58.222)
Okay, how do we, again, completely random stab. So if you want to just spit out numbers, you do something along those lines. Here, there are some assignments. Maybe we can do a…
can take what we had before, we’re not outputting it. Let’s say, reload start.
Krish (aws.snowpal.com) (08:56.15)
Okay, so if you’re generating a JSON, it accepts it. I’m just trying to see how you’d write some code with both elements. This is outputting. Actually, this is outputting. I could just do.
Krish (aws.snowpal.com) (09:17.29)
Since it’s expecting only JSON, let’s see, can I have another? Of course not. So it’s a single JSON it’s trying out, but let’s look at something else a little bit more interesting. So there is a variable assignment there. You assign the variable above the three dashes.
Krish (aws.snowpal.com) (09:45.934)
friend.
Krish (aws.snowpal.com) (09:55.89)
Okay, so, okay, what’s below? I’m trying to understand the three line difference in DataV, but I guess we will discover as we go. How do we merge these two together? We are again, taking a digression. We started with any point, but again, this is just a learning exercise, just getting our feet wet. For anybody who’s interested in this, and check this out, it’s pretty informal as you can obviously tell, right?
We’ll get back to any point because I want to share a couple of things about what I was able to find out in the 10 minutes between the recordings, but I’m just a little bit distracted given that I’m exposed to something new, a new DSL here. So we are printing out, so we are signing, mascot. It doesn’t look like, let’s see if I can do where temperature equals 25, right? So the data type, I guess there’s no data type. We’re just assigning a variable. Do I need to do that?
Yes, I do need to do that. OK, it prints. Let me remove this. Now I can print temp as well.
Krish (aws.snowpal.com) (11:03.71)
Okay, let me understand this. So how, what is a print in dataweave? Dataweave language print.
Krish (aws.snowpal.com) (11:20.958)
Actually, let’s just learn and discover the old fashioned way just by doing it here. Okay, so this is basically printing out maskit. Here’s the input, ID one, and then there is a descended. Okay, let’s take this input. Let’s go here to our playground. I’m going to change the payload a little bit here. Okay, and then go back to tutorial.
And then we’re gonna have our produce on and that’s the code.
Krish (aws.snowpal.com) (12:04.526)
Hang on. Oh, no, my bad. I put it in the wrong place. Sorry. Put it above those lines. Okay. Now it’s basically taking the descendent payload. Okay. What is it? This is payload, right? It’s referencing it with payload. Two dots and an ID, which is getting one, two, and three. So it says, go any levels deep into these IDs and pick and choose them.
So if I added a fourth level here, let’s say level, second level, it’s nested, and then you have a third level and I’m gonna go in here, I’m gonna say fourth level, and we’re gonna do ID, we’re gonna say four, you know what, let’s say seven, and then we leave it be. Now we see I, one, two, three, seven, so it goes all levels deep.
It’s saying one and 11. It’s only one level deep. It’s showing both the values in an array. Second level multi-value is empty because why is it? Because we are printing because we don’t want anything to be printed in that multi-level second value. Third level and then all the IDs is again, dot star ID gives us all the IDs, right? Every ID at every level essentially.
multi-level second value, multi-level first value is payload.starid. So we got these two. How do we get two and 22? If I wanted two and 22, let’s see payload. Second level.starid. So we get two and 22, right? So just a simple example. Again, see, we did not go through documentation like the traditional way of going through tutorials.
What I mean is reading through documentation. There’s no right or wrong answer. I know that approach works for some people. This works for some of us. Maybe just try playing with it. And then a couple of hours later, you get a hang of how it does things. And then you start coding to it. And then learn as you go, essentially. Okay, this is nice, actually. The playground is very good. I mean, like Golang, for instance, has a fantastic playground.
Krish (aws.snowpal.com) (14:24.746)
as Golang is a little bit more of a complex language, but again, you can go to the playground, spend like three, four hours, you get a good sense. And then you can start coding and then learn as you go, get better and better at that, right? How else are you gonna get better? Let’s go to the tutorial. I wish, I mean, I would open this in two different windows if I were doing it more seriously outside of a podcast, simply because you don’t wanna, this is time wasted. Every time we do this, it goes to the top and you’re wasting time.
So something like this, literally I would say.
Krish (aws.snowpal.com) (15:01.142)
Okay, go to tutorials. And then you, where were we here? We were variable axis, right? We were on variable axis. And then, you know, you should make it smaller. That way you can split the editor and whatnot. So when you’re going back and forth, you’re not actually losing context. Okay.
Let’s go below. Let’s look at a couple of more things about this as I’m a little intrigued about language logical operators.
Krish (aws.snowpal.com) (15:36.354)
So the line separator, essentially what we have done here is all available is above. So let’s look at this D. What is this data, we’ve language, data, we’ve language, three dashes.
Krish (aws.snowpal.com) (15:55.518)
Yep, consider a header and a body separated by three, separated by three, header contains language directives, et cetera, exactly what we had thought, right? We assume based on what we saw here. Okay, so let’s say there’s, let’s look at some more code.
Krish (aws.snowpal.com) (16:17.998)
Let’s see, let’s go back. Oh, they have something called, they have lambdas. That’s not too bad. So you have.
Krish (aws.snowpal.com) (16:30.658)
and see what happens. Okay, so how do you have multiple lines of code in this body here? That’s the part I’m still not sure about. Each of them might work in itself. Why is this not working? Output JSON, output is JSON.
2 plus 3 is complaining, cannot course function to string oh, it did say that’s going to be an error let’s, there we go, let’s look at it here
Yeah, how do you have multiple lines of code in this script here? It’s basically making a functional. You can look at the explanation here. Lambda is not having names, et cetera. D data weave script multiple.
Krish (aws.snowpal.com) (17:38.57)
Sample script maybe.
Krish (aws.snowpal.com) (17:47.118)
So that’s all the header and then you have the body. Let’s see.
Actually, let’s read dataweave script dash dash, three dashes, right? Or we should just say three dashes. We saw that consists of a body and separated by three dashes. Body contains expression that produces resulting output. Resulting output usually a data mapping or a transformation. And all of those transformations happen to be in the body. So let’s look at a little more.
Here are a few examples.
Krish (aws.snowpal.com) (18:34.422)
Oh, single lines, single lines. Data we’ve.
multi-line script
Krish (aws.snowpal.com) (18:49.176)
Multi-line is usually not
Krish (aws.snowpal.com) (18:55.31)
Okay, so here it’s doing a bunch of different things. Let’s see.
Krish (aws.snowpal.com) (19:03.914)
Still trying to wrap my head around what goes in a body versus a header or a data wave. Body versus.
Krish (aws.snowpal.com) (19:16.174)
And language directives, I got that part and can also contain variable and function declarations. The body contains expression that produces the resulting output, usually a data mapping or a transformation. So if you had a few lines of code, let’s just find script and to me. I’ll be back here again. Okay.
Actually, you know what, let’s just go through this and see if we can find function as value. Again, they have a function, one line. Give me something a little bit more complex, please.
Krish (aws.snowpal.com) (20:08.738)
This is not giving me what I’m looking for. Okay, let’s keep looking. DataWeb script example.
Krish (aws.snowpal.com) (20:33.55)
We’ll keep looking, extract data.
Krish (aws.snowpal.com) (20:41.686)
Okay, here, let’s take…
Krish (aws.snowpal.com) (20:47.426)
So we have again a couple of different variables and extracting value from it. That’s too simple and straightforward. Map and flatten an array.
Krish (aws.snowpal.com) (21:00.142)
Okay, so there is a function that does whatever it needs to do. And then you have something in the body, which is again, a single line essentially.
Krish (aws.snowpal.com) (21:15.434)
one more time it’s a single line data view script body multiple lines
Krish (aws.snowpal.com) (21:44.418)
All of them seem to be packed into a single line output. Okay.
Krish (aws.snowpal.com) (21:58.978)
When you write inline by flattening all the lines into a single line for smaller scripts, it will quickly apply header directives, including headers and inline data we’ve scripts. So maybe there is a notion of an inline data we script versus.
Krish (aws.snowpal.com) (22:31.662)
So it’s a primary data transformation language for use in Mule flows. So if you’re building Mule application skills, this is something you need to get, wrap your head around. Keywords you’re gonna use for header directives. So there’s import statements, variable declarations. Okay, and then body here.
Krish (aws.snowpal.com) (22:58.322)
Okay, contains an expression that generates output, provides a canonical way for your work on data, a query transform and build process. It takes the entire payload of the JSON input to transforms it into something.
Krish (aws.snowpal.com) (23:18.51)
comments double slash is okay
Tape special characters, reserved keywords, DWL files. Still am not able to get the answer. Contains an expression that generates output structure. So it seems like it’s a single expression. So maybe the way this gets wired into a mule application, I have to presume that you need a single expression. And if one leads to another, I’m presuming you’re gonna have a flow of workflow where you pass data from one to the other.
So what I have to assume that is the case unless and until we find out otherwise, right? So now that we’re here, let’s run a couple of more things because this actually is a little bit fun, right? We are learning something new. Okay. Payload.id is less than 100. And then now let’s print out action. I guess we can only print one of them.
I presume if you had to print more, you’ll put that in some sort of a function or an expression in the body, and then you print out more, right? For instance, let’s say we had this one here. Let’s try something. Let’s say if I have an output result as this, and then I have action. I’m gonna do action.
right now have both of them. So it says if payload ID is less than 100, then buy, else hold. So you have this code that we are writing. It’s just another, again, DSL, right? Another language. You get used to it. Seems pretty straightforward. You wanna spend a couple of hours and you get a good hang of it. I doubt, I mean, the DSL, I could be wrong and pretty judgmental here, but the DSL languages typically don’t tend to be too complicated. It’s not like learning a brand new language, so to speak. You know, like…
Krish (aws.snowpal.com) (25:14.898)
learning Golang for instance, it probably take a little bit more time, I reckon, then learning, sorry, let me just, then learning something like this. But I think we got the idea. We saw logical operators named functions, actually. Let’s create one function.
Krish (aws.snowpal.com) (25:38.926)
this function here, result two is add, and then you’re gonna pass. Let’s see, if I wanted to store this in another way, I don’t wanna get too fancy here. Okay, it’s gonna be, I’m gonna say payload.id, or I could say payload. was it star ID? Something like this. Okay.
So it essentially took that, you know, payload, what is this? star id, ids, I’m just gonna say that. That’s one and 11. We pass one, 11, and then two. The result is printing out an array. Let’s try just doing a number here. That’s okay, that’s what I expected. I expected this to, well, it’s actually passing an array.
and then a number so maybe it’s not flattening it but I thought we saw something that said you could actually flatten oh where did that go?
Krish (aws.snowpal.com) (26:54.254)
I’m sorry, just taking a little bit. Okay. Doing on laptop, so just only so many windows. I thought I saw something here that said flatten. Did we not? I recall seeing something that said.
Krish (aws.snowpal.com) (27:13.294)
filter function as value, distinct reduce. So what we’re doing here is we passed an array, which is one and 11, and then we passed two arguments. And it’s interesting, you just put one, 11 and two together. As you know, it is happy to take that expression, so it’s not looking for an array, it’s not strongly typed in that sense. What if I passed a string?
I’m gonna freak out, I’m hitting on…
Krish (aws.snowpal.com) (27:47.51)
Okay, call the function of these arguments. It expects one of these combinations. So that’s what it says, right? It says you can send any of this, but not actually a string, okay? So let’s go back here. And there must be a way to flatten this. Let’s see, data weave.
flatten
Krish (aws.snowpal.com) (28:12.866)
of elements but how there is a flatten function why don’t we try passing flatten to it well if flatten what I’m just trying to see if we can add one eleven and two maybe flatten
Krish (aws.snowpal.com) (28:41.058)
Well, it flattened, but it still did not add those values. So I don’t know what difference this actually made. Let’s see what flatten is gonna do here. Flatten array one, it basically takes key one, key two, key three, it flattened the whole thing into a single array, right? It flattens multiple arrays, sorry, multiple arrays into a single one. So that doesn’t really make a difference to what we need.
Anyways, I’m just taking a non-existential requirement and doing it, but it’s interesting to see that I was able to pass this and it just tried to return a bunch of arrays, you know, bunch of elements in an array. Okay, function as value. And we can look at more of this, but you can see there’s only so much, right? There’s mapReduce, there’s filter objects for string manipulation.
that is it, then that’s just pretty small. And it probably does the basics of what you need from a data transformation standpoint. Once you know it, I assume you can tie this into these components and recreate the flow and have those being passed from one to the other is what I’m assuming it actually is doing. So we, you know, 20, 15 minutes ago, we had no, I had no idea what data we was, but I think 15 minutes, 20 minutes later, we have some idea what that DSL is and we’ve tried some examples. And that-
gets you going, right? So never, if you don’t know something, someone says, can you go Chris, go implement something in DataWeave? You’re like, okay, I have no idea what it is, but then a couple of hours later, you come up with a solution. Right now we need to figure out how you take this and then you wire it into whatever it is that you’re doing. That’s something I highly recommend. You know, because sometimes I see good developers, you know, do something like this, right? Where you actually try to set up the whole thing before you get this running.
even if they do not provide a playground, you have to sort of create your own playgrounds and then you can do it in one of many ways, essentially. Create simple applications, treat that as a playground. Even when you’re working on a large Java application, when you’re writing a piece of complex code or even not so complex code, write it independently so it works and then you can plug that into your whole application because sometimes…
Krish (aws.snowpal.com) (31:00.546)
You need seven dependencies till you get to this point and three things happen after your piece runs. You never know where things fail. If they do fail, so it’s always best to get yours running in isolation and then plug that into the larger system. Okay, DataWeave, I think we have an idea. So we can probably close these tabs. Leave bye-bye for now. So back to this, right? So this is essentially what I was doing here.
me close this.
Krish (aws.snowpal.com) (31:38.682)
So what is happening here? Yeah, we were just trying to recall. So we did, we took an example, the data view of language as a function, I guess, and then we ran it and it basically did the conversion. Just as an example. And then if you go to terminal, when you open it, let’s say these are the files.
Krish (aws.snowpal.com) (32:03.714)
Okay, cool, I think that’s fine. So that’s what I noticed. And then you can do the same thing in your editor without doing it in the embedded browser-based ID. But I looked at that and I looked at something else as well. And then I was looking at, hey, how do I create like a simple, what is it, a Mule application? That’s what it’s called. I was going through the code builder, essentially.
I don’t want to install anything else. I don’t want to install the any point studio editor, but I actually had to, because I was trying to play with one of their initial examples. Like I think I went to one of these pages and said, create a MongoDB connector. And for the life of me, I could not find, how I would create a MongoDB connector here. So I created this just so I can show you. What I did here was I went in, I think I said any point.
I said, develop an integration. I gave it a name and then this is what happened, right? It popped up this UI is like a visual workflow. I can kind of like drag and drop, not drag and drop, like add these flow components and whatnot. You can go to the flow. Oops.
is I only have a flow, I can go to connectors, I can say database, and I said something like select for instance, right? And I only have that, so I’m gonna undo this. So that select wrote this, generated the DSL for me, right? Again, remember this is low code, I don’t know if it’s no code, but it’s pretty low code platforms. So a lot of it is generated for you and then you plug and play essentially, right? Do the mapping there. So yeah, we’re adding a SQL connector, but then I was like, okay, I need to.
Before I write the SQL, I want to establish the connection to a database, whether it’s Postgres or MySQL or Mongo, it doesn’t really matter. I didn’t see how the connector could be done here. If you’re familiar with this, you should probably share or add a note or comment on the podcast so other people can benefit. I have to believe there is a way to do it, but I couldn’t. I right-clicked, I only see delete. I don’t know where these connectors should possibly come from. All the examples, at least the ones I saw, I don’t
Krish (aws.snowpal.com) (34:20.926)
In the two minutes, it pointed to the AnyPoint Studio Editor, like an Eclipse-based editor. So I said, okay, you know what? Let me download this, and that’s basically what I did. And then I see the Mule palette, right? I didn’t have to look harder. The Mule palette is right there. And then this looks pretty similar. If you look at bulk delete, bulk insert, that’s kind of what we saw here as well. Like if I go to connectors, database, bulk delete, bulk insert, stored procedures and the whole.
nine yards. But when I added the select, when I drag and drop the select, and I click that, you see this pane at the bottom that says pick your connector configuration, and then you can go edit or add, I added a GDPC drive, I just picked the maven dependency. And you can tell the UI looks pretty bad. I think it’s just not, doesn’t work on these Macs. I’ve seen, I don’t know how Eclipse, if it’s still stuck in time.
you know, are, are if there’s a way to wiggle out of these issues. You see the fonts, they just don’t work. They look terrible. The whole look and feel essentially, right? Maybe there’s a solution. If there is, please again comment. But if it takes more than five minutes to find it, then the tool is literally lacking because it’s not worth doing it right. VS Code is just so simple to use.
or would I spend even 10 minutes trying to figure out a piece, Eclipse based IDs from 10 years ago where I used to like Eclipse, I’ve gone the other extent where I’m not a fan of it, as you can clearly tell, but just my personal opinion. Yeah. Okay. Yeah, hopefully I’m still recording.
Krish (aws.snowpal.com) (36:07.694)
a few too many windows open here. This one I think we may have gone through in the previous podcast. So I probably can even close that, but before I, okay. I’m still here. It’s recording 30 minutes in, so we should wrap this up soon. Okay, so you go here back to Eclipse or any point studio. You see that, okay, let me close down save. I go here.
Krish (aws.snowpal.com) (36:40.926)
I picked this, ignore it Mongo, it’s just DB, I just called it Mongo. And again, ignore all of these queries, but ultimately there’s a database connector, right? A connector configuration. And again, I did not see this present itself on VS codes. I don’t know what kind of support there is, maybe there is support, I’m just not seeing it. But anyway, so you can set up your connectivity and I tried to do it for Mongo.
Unfortunately, it failed. I ran into an error. Like if I show it to you here, what I did was I actually tried to add a Maven dependency for Mongo and it installed the dependency. I just went in here.
Krish (aws.snowpal.com) (37:26.92)
Yeah, I picked up the Mave and dependency, right? Add MongoDB as a dependency event here. Oops.
Krish (aws.snowpal.com) (37:38.608)
It is actually, let me go back there.
It says it depends, see, artifact already exists in the project because I added that previously just before I hit record. But then when I test the connection, it says test fail, no bin available, blah, blah. This is the.
Krish (aws.snowpal.com) (38:07.922)
sure because I ran into an error and then when I googled I found yeah this is the error I ran into right it basically said the following exceptions were encountered while resolving no exceptions recorded but no modules resolved that’s what I saw let’s see what did I do for me to actually see that let’s go back here
Krish (aws.snowpal.com) (38:44.286)
And so, because that is that is.
Krish (aws.snowpal.com) (39:02.978)
I wanted to reproduce the exact same error that I noticed. So.
Krish (aws.snowpal.com) (39:14.774)
We had the data.
Krish (aws.snowpal.com) (39:32.763)
I’m trying to think.
Okay, let’s actually do this. Maybe two different errors, but let’s say I wanna establish a Mongo connectivity. So I go here, I’m gonna close that one. I’m interested in that. Mule palette. Yep, mule palette for the, it says, see click DB, add modules. This is actually one thing I did. In mule palette, you go to add modules to.
Why get out of this?
Krish (aws.snowpal.com) (40:13.39)
It must be a better way to do this. Okay. Go to search and exchange, and then you search Mongo. Yeah, there actually, this is where I think I ran into that. Because that one was different, sorry, ignore that. And I tried to add this, the Mongo connector, and try to install the connector. See, this is where it says no exceptions recorded, but no modules result either. So I couldn’t even add the MongoDB connector. I was, forget this, I was doing something else to set this up, it’s different.
And then I Googled and this is an open issue from not too long ago, November 27th. It says this is a known issue, right? So I only ran into the first issue. But let’s say you did not. I guess here is how this thing, I believe might work, right? Let’s say we delete this.
Krish (aws.snowpal.com) (41:02.478)
Let’s say we add a request.
Krish (aws.snowpal.com) (41:08.782)
this here. Can I delete this particular flow? Right click, delete, okay, go away. Okay, now we have the request. I guess you can define an HTTP request or a RESTful request or whatnot, right? And then you can get some response back. I guess you would say, oh, no, maybe I did it wrong. I’ve never seen this tool before, so apologies if I’m doing something silly here.
seems strange sometimes does not give me the option to delete it
Krish (aws.snowpal.com) (41:47.278)
I can hardly tell I’m even selecting it. And that clearly looks like there are bugs here. Okay. Now there is a request. How do I add something to this flow? Is there supposed to be an arrow here?
Krish (aws.snowpal.com) (42:03.885)
Okay, we’re gonna get something. Let’s say we get something back from this request and we get a response back and I wanna transform that response. So I’m gonna drag this transform.
put it here. Okay, how do I connect?
Krish (aws.snowpal.com) (42:30.262)
How do I connect these two? Oh no, these are two different flows. So maybe I’m doing it the wrong way. This user interface is horrible. Yeah, there’s certainly a bug even I delete that it doesn’t let me delete. I have to come back, select it again and then it shows me and delete, okay. Oh, hang on.
Krish (aws.snowpal.com) (42:55.854)
delete this. Okay, let’s start. Can I delete this flow as well? Let’s start from scratch. I wanna have a request. Okay, I dragged an operation. I don’t care what the request is gonna be. Now I need to modify this flow. Wrap in, I don’t wanna wrap in anything, extract to subflow. Flow name, subflow.
Krish (aws.snowpal.com) (43:30.698)
No, I don’t know if I’m done. All that I’m trying to do here is see how I can drag one more component. And somebody who’s done this before, they’ll be like, Krish, what is this? It’s so easy to do. I’m just trying to look for documentation and try to figure this out because it should have been as simple as that where you drag and drop the other one to extend the flow. Because when I try to do, let’s say you try to do something here.
See, that’s how it is, right? Okay, let’s say we have here and I’m gonna add something else like a connector, a database connector, I don’t know, it doesn’t matter. I can insert and then add something else, another connector, it could be an email and send an email, right? So you have this flow here, right? This is basically a flow.
Krish (aws.snowpal.com) (44:39.49)
wait for that. Okay, so.
Krish (aws.snowpal.com) (44:44.83)
Okay, these, you know, I’m not a drag and drop person, clearly, you know, I’m just used to writing the code. So these low code tools need a different perspective, just being able to use it and be productive and we’re not spending time minimizing and maximizing a million times. Probably it’s just easier to write the XML rather than drag and drop here, possibly. How can I make this go away? Let me even more, let me just.
Krish (aws.snowpal.com) (45:15.63)
coming in my way unfortunately. Okay. This is the UI flow. It looks fancy. It just takes a little bit of time for it to prepare itself.
It’s taking more than…
Krish (aws.snowpal.com) (45:34.503)
than a bit.
That’s an awfully long time to prepare.
Krish (aws.snowpal.com) (45:43.886)
Is that freaking out? Is that buggy?
Krish (aws.snowpal.com) (45:54.194)
That doesn’t look so right to me. Okay, let’s do open recent.
Krish (aws.snowpal.com) (46:13.53)
I have no idea why it’s taking… that long.
Krish (aws.snowpal.com) (46:25.774)
Go away, go away, go away.
Krish (aws.snowpal.com) (46:30.25)
I’m going to delete everything here. So we have a flow that’s air. I guess we can have an empty flow. OK. Now we do this. Oops.
Krish (aws.snowpal.com) (46:44.479)
Build a flow. Let’s see.
Yeah, this UI is really questionable. Okay, it’s got a lot of issues to say the least. Yep. Okay, so let’s say we go to, where was it? I thought we had database, okay, database. Just do a select. You have that and then we go here, connectors, email, and then we send, right? Something like this. So, and then you created this to drag and drop or not drag and drop, just click and add, and then you can make these changes. You…
select some data based on that, you do some transformations, you send some emails out. So it’s low code there, right? You’re not really writing quota then pretty much dragging and dropping and making some adjustments to configuration. So the perspective has to be actually different. Now that said, let’s say I wanna do something similar here. Maybe that flow is perhaps different from this flow. Let’s see, there’s a flow reference.
Krish (aws.snowpal.com) (47:53.938)
Yep, I don’t know. Maybe we’ll have to just look up documentation to see. All I wanna do is have just something like that. Have a request, get a response, and then transform that response essentially. So why am I not able to drag and drop fields to build the trans, oh.
Krish (aws.snowpal.com) (48:17.102)
How did that show up there?
Nevermind, I had to. I just had to drop it inside this flow. I was dropping it outside. Oh my goodness. Okay, that was the problem. Okay, now if you wanted to add a new flow, I guess would we add a new?
Krish (aws.snowpal.com) (48:39.182)
flow, each flow, and then I don’t know how you have request flow from, you know, move from one flow to the other. And I’m sure there’s a way to do it. So you transform messages. You can transform message any number of times, right? You take one, whatever happens from here, you map those attributes. Imagine you’re making a request, third party, getting a list of restaurants, and then you do some transformation. And on top of that, you do another transformation.
The reason you want to keep it small when you’re building these flows is because when you’re fixing something, it’s like writing code and keeping your, not a monolith or a microservice, right? So think of each of these as, I’m using the words very loosely, as a microservice released in the smallest form or a function that way when something is wrong, when you want to pull something out, you only pull that out and it affects the flow, but your impact is not dramatic and it’s easy but not as difficult to keep it backwards.
compatible, for instance. So anyways, keep those flows simple, and then you can add any number into this mix here, right? You’re inserting something. Now, after you transfer the message, maybe you do a bulk update, right? Let’s say I drag the bulk update in here. And after you do all of this, you run, right? You basically run. I’m just gonna save, save sample. Yeah, that’s okay, right? And it builds, it’s gonna run it.
And then you’re going to be able to test it. And then if things work, obviously, we haven’t done anything here for it to work, you can package and deploy it. So essentially, you could do this as somebody who’s not, presume you don’t have to be a developer. These roles are becoming very, all the roles, a lot of these roles are merging as AI comes into the picture.
If you’ve not done development, you can actually step into development, with the help of a lot of these tools, without being a formal, going through a formal process of training, if you will. Similarly, a developer could learn a product management skill because a lot of these AI and these prompts are actually bridging those gaps. So all of us can do a lot of things and things that we may or may not have direct skills or learning or training experience with, at least to get started.
Krish (aws.snowpal.com) (50:57.822)
So the way I see it is if you want to do development, but don’t necessarily want to be writing a lot of code or you enjoy doing integration work where you like to write some code, I’m pretty sure you can plug in snippets here and you want to be able to build integrated LAT systems, then tools such as this should work well. Just as you understanding what do you want to try out, where do you want to go?
in your career after you graduate or after you’re done for a while. Now that was not the purpose of this podcast, but we sort of digressed a little bit. I just want to show you what it meant to getting started with something that you may not have ever used right now. I don’t know what the length of this podcast is at this point, maybe it’s close to an hour, give or take. Let me close this window. So that’s, before I close it, I don’t know if there’s anything else to see here, right? We added a flow, we figured out how to drop components into a flow and then you can get it working, run it.
test it and then deploy it. Now there’s a lot of tools such as this, very similar. I’ve used one called Tailend, which probably, I don’t know if it’s in this space, it looks similar. I did some work for a month or so, trying to get a few of these transformations working. There are a lot of similarities. That one looked a little bit less dated than this one looks to me, even though I had used it some time ago actually, right?
So when you get started with something, again, there’s no right or wrong answer. There’s many ways to skin the cat, as they say. The way we approach that, Snowpal, is we just start using the tool, digesting it, getting the feel for it. By the end of the day, we have something working, right? And then you feel better. You have a comment, you have a PR, hopefully gets approved, and then merged into your dev branches. You feel like, yep, you’ve gotten started. You’ve hit the ground running. So let me actually close this one. I can even close.
this editor. I can close this. I’ll close this. We talked about the mule palettes. Just close this. Close Mongo. Come back here. Okay. And then we saw a flow here as well. We saw the data weave, the DSL and the, right? Oops. Let me actually go back here.
Krish (aws.snowpal.com) (53:24.29)
We ran, we learned, we went to the playground, played a little bit with that, checked out the integrated ID on the browser, also saw the any stream, sorry, not any point, code builder, any point studio, any point studio. And that, I think, gives us some idea, right? If you had no idea what any of these things were, hopefully at the end of this, an hour, hour and a half, you have some idea.
An initial, very high level exposure. So you feel like, yep, I can just do the same things, get started, make more progress, and then chug along essentially. So we’ve looked at Code Builder, looked at Design Center, and then I guess in the next podcast, what is Exchange? I think Exchange is basically we created this API. We talked about all of this in the first podcast. So maybe this Exchange is just where you go look at
This is what we created. And then if you look at what MuleSoft provides, you have a lot of these other plugins. And I think I, you know what, let’s do one more thing. Let’s search for Mongo here.
Yeah, you have the Mongo connector. And then if you go into this, this is basically what I want to say we were looking at, getting started with that connected at Anypoint Studio. So you get all these plugins. And I don’t know if there’s a way to build this right here as opposed to going to an ID outside, which is probably, yes, you can, because you could actually go to that integrated VS Code ID, except that for some reason I didn’t find.
a way to add this connector, but there has to be a way to add the connector. Otherwise I don’t expect to see that here. So we probably just didn’t find where it is. Maybe we can give it one more shot, but in the interest of time, I’m just gonna move. Maybe in the next one, we can look at what a data graph is, right? And we’re just going to go through a lot of these as a way of hopefully this helps you if you’re trying to get.
Krish (aws.snowpal.com) (55:30.058)
started with any of these items with a young school and college at work, and you’re trying to learn some of these things. I wanna learn with you, except you’re not here unfortunately, you’ll be watching this offline, but maybe I’m gonna hit some of my, some people I know and see if they wanna, folks who actually work in integration, and a lot of really smart people who have worked with, who specialize in these types of things.
And if I can convince them to come on board to the podcast, we can take a much deeper dive into these items. But I think we’re making some progress here. So I think this is about an hour almost. So I’m going to end this. Hopefully you enjoyed, hopefully you learned something. Check out our APIs and our SaaS products on AWS Marketplace or go to saas.snowpal.com, and you’ll see our offerings, if you’re building mobile, web apps, microservices, say, use your time, resources, money, and effort to building, solving your real customer problems. Anything else that seems boilerplate-like, it probably is boilerplate if you think, what they say, right? If it sounds like a duck, walks like a duck, and acts like a duck, it’s a duck. So if you think what you’re doing is boilerplate-ish, then you shouldn’t, we advise that you don’t do it.
license our APIs and provision them in your own infrastructure. That’s completely doable as well. It’s quite easy. And we can help you. That’s about it. Thanks for watching.
Go to Part 5.
Snowpal’s Products:
- Backends as Services on AWS Marketplace
- Mobile Apps on App Store and Play Store
- Web App
- Education Platform for Learners and Course Creators